• 3月
    22日
    LinQ的Sum()方法null值报错的解决办法
    C# [0] 2014-03-22 02:12 2179 0

    发个刚刚遇到的问题,刚准备在首页侧边写个统计帖子和回复数的,结果发现,当没有文章的时候,回复数使用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();


    当然,如果考虑效率,当然是第二种来得好些,因为第一种会查询两次。


文章评论