我正在尝试使用SUM()
来累计列中的所有条目,然后将该数字转换为int
。
我在转换中遇到问题,因为有些条目是NULL。我尝试在!= null
子句中使用WHERE()
排除它们,但我仍然遇到同样的错误
转换为值类型
Int32
失败,因为具体化值 一片空白。结果类型的通用参数或查询必须 使用可空类型。
这是我的LINQ查询,有人可以指出我缺少的是为了正确排除空值吗?
TotalLiftings = db.Query<Transaction>().
Where(tr => tr.TerminalId == TerminalUserData.ID &&
tr.ProductId == t.ProductId &&
tr.TransactionDate == t.InventoryDate &&
tr.NetGallons != null).
Select(tr => tr.NetGallons).
Sum();
答案 0 :(得分:1)
您只需要投射到nullable
int
。发生错误的原因是您尝试不记录任何记录,结果是null
,但int
不能null
.Select(tr => tr.NetGallons).Cast<int?>().Sum(),
或
.Select(tr => (int?)tr.NetGallons).Sum(),