这个SQL可以在LINQ中完成吗?

JGi*_*tin 3 c# sql linq .net-4.0

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

select top 1 * from tbl_CarTax tax
ORDER BY ABS(tax.C02_From - 286.0)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下但是我得到了错误... - 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();
Run Code Online (Sandbox Code Playgroud)

任何帮助都是最受欢迎的

Truegilly

Dan*_*rth 5

没有必要Convert.ToInt.另外,FirstOrDefault相当于top 1.SingleOrDefault如果您的查询导致返回多行,则会抛出异常.
尝试使用此代码:

TaxCost = (from tax in db.DB2011_Vehicle_CarTax
           orderby Math.Abs(C02Level - tax.C02_From)
           select tax).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

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