Linq的sum函数InvalidOperationException异常解决办法
表A中有一列StorageByte(int, not null),求和
A.Where(a => a.JobId ==@jodid).Select(c=>c.StorageByte).Sum()
如果这个@jodid不存在,程序会报InvalidOperationException:The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
解决方案:
1.
public int GetSum(int jobId)
{
if (! A.Any(a => a.JobId == jobId)) return 0;
return A.Where(a => a.JobId ==jobId).Select(c=>c.StorageByte).Sum();
}
虽然能解决问题,但毕竟需要一次查询,于是想出方案2
2.
public int GetSum(int jobId)
{
return A.Where(a => a.JobId ==jobId).Select(c=>c.StorageByte).ToArray().Sum()
//or
//return A.Where(a => a.JobId ==jobId).Select(c=>c.StorageByte).ToList().Sum()
}