发个刚刚遇到的问题,刚准备在首页侧边写个统计帖子和回复数的,结果发现,当没有文章的时候,回复数使用Sum()方法会报异常,原因是Int32无法存放null值。
原本的写法是这样子的:
int total = db.TableName.Sum(o => o.ReplyCount);
结果就报异常了,原因是根本就没人回复过,返回null值了。
解决的办法有想到有两种:
第一种是先Count()判断是否有记录,没有直接返回0,有再Sum()。
int total = 0if(db.TableName.Count() > 0) total = db.TableName.Sum(o => o.ReplyCount);
第二种方法是先将结果转化为int数组,然后再Sum()。
int total = db.TableName.Select(o => o.ReplyCount).ToArray().Sum();
当然,如果考虑效率,当然是第二种来得好些,因为第一种会查询两次。