1

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

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

错误 :

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

4

3 回答 3

2

试试看:

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

    if(result != null)
      {
          return result;
      }
    return 0;
于 2013-03-15T16:48:17.843 回答
1

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

尝试

return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId
   && p.Value != null).Select(x=>(double?)x.Value).Sum() ?? 0.0M;
于 2013-03-15T17:03:33.277 回答
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;
        }
于 2013-03-15T16:51:50.053 回答