次のクエリがあります。
int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
ただし、検索条件に一致するレコードがない場合、次のエラーが発生します
具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました。結果の型のジェネリック パラメーターまたはクエリのいずれかで、null 許容型を使用する必要があります。
助けてください
次のクエリがあります。
int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));
ただし、検索条件に一致するレコードがない場合、次のエラーが発生します
具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました。結果の型のジェネリック パラメーターまたはクエリのいずれかで、null 許容型を使用する必要があります。
助けてください
防御的プログラミングの基本:
まず、Sum()
操作の結果をnull許容変数に代入します
object resultOfSum = db.vwAssignments.Sum(a => a.Amount);
NULLをチェックしてください!null でない場合にのみ、それをINT
if(resultOfSum != null)
{
int Giver = Convert.ToInt32(resultOfSum);
}
また:あなたのAmount
フィールドがInt
最初からである場合、ほとんどの場合、これはすでにNULLまたは有効になっていますInt
-への呼び出しは必要ないと思いますConvert.ToInt32()
:
int? Giver = db.vwAssignments.Sum(a => a.Amount);
if(Giver.HasValue)
{
......
}