我有一个简单的 SQL 查询,但我很难在 LINQ 中进行复制

select top 1 * from tbl_CarTax tax
ORDER BY ABS(tax.C02_From - 286.0)

我已经在下面尝试过,但出现错误... - LINQ to Entities 无法识别方法 'Int32 ToInt32(System.Object)' 方法,并且此方法无法转换为存储表达式。
TaxCost = (from tax in db.DB2011_Vehicle_CarTax
orderby Math.Abs(Convert.ToInt32(C02Level - tax.C02_From))
select tax).SingleOrDefault();

任何帮助是最appriciated

特鲁吉利

最佳答案

不需要 Convert.ToInt 。此外, FirstOrDefault 等效于 top 1 。如果您的查询结果返回多于一行,SingleOrDefault 将抛出异常。
尝试使用此代码:

TaxCost = (from tax in db.DB2011_Vehicle_CarTax
           orderby Math.Abs(C02Level - tax.C02_From)
           select tax).FirstOrDefault();

与其他答案相反,我认为没有必要避免使用 Math.Abs ,因为 Entity Framework 知道此方法并且可以将其转换为 SQL。

关于c# - 这个 SQL 可以在 LINQ 中完成吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5554863/

10-11 00:17