2

次のクエリがあります。

int? Giver = Convert.ToInt32(db.vwAssignments.Sum(a => a.Amount));

ただし、検索条件に一致するレコードがない場合、次のエラーが発生します

具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました。結果の型のジェネリック パラメーターまたはクエリのいずれかで、null 許容型を使用する必要があります。

助けてください

4

1 に答える 1

2

防御的プログラミングの基本:

  • まず、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)
{
   ......
}
于 2013-03-28T06:21:11.703 に答える