我有一个名为'length'的字段的表,类型为varchar(10)。这些字段包含“实数”(带小数点的小数 - 例如647.45224) - 表示为字符串。 我想调用一个Linq-to-SQL查询,该查询将通过此字段(在其数字表示中)对SELECT的结果进行排序,就像使用此“本机”SQL查询一样:
SELECT * FROM [Table] ORDER BY CAST(length AS float) DESC
我已经尝试了几种告诉LinqToSQL将字符串转换为float的方法,但是在运行时它会返回转换错误(请注意,没有智能感知错误,编译期间也没有错误,只有在执行时)。 / p>
我试过了:
Results = dbx.[Items].Where([conditions]).OrderByDescending(b => float.Parse(b.length))
我也会选择舍入并转换为Int并按顺序排序(虽然我更喜欢使用实际的数字),我试过了:
Results = dbx.[Items].Where([conditions]).OrderByDescending(b => Convert.ToInt32(b.length))
但这也是错误的。
有什么办法吗?
答案 0 :(得分: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
)