1

db.Profitsこのメソッドは、レコードがない場合に例外をスローします。爆発ページを防ぐ方法

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

エラー :

具体化された値が null であるため、値型 '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 許容値ではないことを期待しているためです。しかし、あなたの結果は 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 に答える