LINQ to Entities无法识别方法'Int32 ToInt32将字符串转换为Int

时间:2013-09-05 13:41:37

标签: linq

我有一个LINQ语句,我希望对一个String类型的列进行求和。

我正在尝试执行以下语句,其中我是Converting.ToInt32。当我运行这个时,我收到以下错误。

  

LINQ to Entities无法识别方法'Int32   ToInt32(System.String)'方法,这个方法无法翻译   进入商店表达。

LINQ声明

    var CoreData = new
    {
    Shoots =
   (from item in coresdb.Productions
    where item.Date >= StartShift && item.Date <= EndDate
   select item).Sum(x => Convert.ToInt32(x.ShootCount)
   )
};

我尝试了许多不同的数据类型进行转换并得到类似的错误。

2 个答案:

答案 0 :(得分:5)

您无法将ToInt32翻译为T-SQL。使其工作的一种方法是根据从数据库中检索的列表(如

)在内存中运行它
var CoreData = coresdb.Productions
    .Where(item => item.Date >= StartShift && item.Date <= EndDate)
    .ToList()  // get the data into memory first.
    .Sum(x => Convert.ToInt32(x.ShootCount));

已更新:在where子句后移动了ToList()。

答案 1 :(得分:0)

如果您不想实现查询(检索数据),可以使用强制转换(即(int)x.ShootCount)。转换为SQL CAST AS语句。