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()

}

posted @ 2010-04-21 10:08  LutzMark  阅读(1422)  评论(0编辑  收藏  举报