如果数据库表没有记录,则无法显示View

时间:2013-03-15 16:45:48

标签: linq asp.net-mvc-4

db.Profits没有任何记录时,此方法抛出异常。如何防止爆炸页面

public double getProfitSum()
{
   return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId).Sum(p => p.Value);
}

错误:

  

转换为值类型“Double”失败,因为实现值为null。结果类型的泛型参数或查询必须使用可空类型。

3 个答案:

答案 0 :(得分:2)

试试:

    var result = db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId).Sum(p => p.Value);

    if(result != null)
      {
          return result;
      }
    return 0;

答案 1 :(得分:1)

原因必须是Sum()期望不可为空的值。但是你的结果可能会给出null。

return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId
   && p.Value != null).Select(x=>(double?)x.Value).Sum() ?? 0.0M;

答案 2 :(得分:0)

甚至更好

    public double getProfitSum()
                {
        var result = db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId
               && p.Value != null).Sum(p => p.Value);

 return result == null ? 0 : result;
        }