1

varchar(10) 型の「長さ」というフィールドを持つテーブルがあります。これらのフィールドには、「実数」(小数点付きの分数。例: 647.45224) が含まれ、文字列として表現されます。この「ネイティブ」SQL クエリのように、このフィールド (数値表現) によって SELECT の結果を並べ替える Linq-to-SQL クエリを呼び出したいと思います。

SELECT * FROM [Table] ORDER BY CAST(length AS float) DESC

LinqToSQL に文字列を float に変換するように指示するいくつかの方法を試しましたが、実行すると変換エラーが返されます (インテリセンス エラーもコンパイル中のエラーも実行時のみではないことに注意してください)。

私はもう試した:

Results = dbx.[Items].Where([conditions]).OrderByDescending(b => float.Parse(b.length))

また、丸めと Int への変換とそれによる並べ替えで解決します (もちろん実数を使用することをお勧めします)、私は試しました:

Results = dbx.[Items].Where([conditions]).OrderByDescending(b => Convert.ToInt32(b.length))

しかし、これもエラーになります。

何か方法はありますか?

4

1 に答える 1

1

使用する必要がありますConvert.ToDouble

dbx.[Items].Where([conditions]).OrderByDescending(b => Convert.ToDouble(b.length))

次のSQLが生成されます

ORDER BY CONVERT(Float,[t0].[length])

SQL サーバーのタイプfloatは .NET のタイプと同じdouble(ではないfloat)であることに注意してください。

于 2012-10-24T16:01:27.320 に答える