LINQ to 实体无法识别方法"Int32 ToInt32 将字符串转换为 int"



我有一个 LINQ 语句,我想对字符串类型的单个列进行一些总和。

我正在尝试执行以下语句,其中我正在转换.ToInt32。当我运行它时,我收到以下错误。

LINQ to 实体无法识别方法 '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)
   )
};

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

不能将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));

已更新:将 ToList() 移到 where 子句之后。

如果你不想具体化查询(检索数据),你可以使用cast(即(int)x.ShootCount)。转换为 SQL CAST AS 语句。