我有一个 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 语句。