我有一个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)
)
};
我尝试了许多不同的数据类型进行转换并得到类似的错误。
答案 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语句。