次のクエリを実行していますが、例外で失敗します。
具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました。
var myvalue = conn.Employees.Where(r => r.LastName == LastName).Max(r1 => r1.Id);
Max() を取得し、1 行のコードで null を考慮する方法はありますか?
Id が nullable であると仮定して合体を利用するか、where-condition を拡張します。
// Coallesce- probably not the best thing here
var myvalue = conn.Employees.Where(r => r.LastName == LastName).Max(r1 => r1.Id ?? 0);
// Expanded where-condition
var myvalue = conn.Employees.Where(r => r!= null && r.Id!=null && r.LastName == LastName).Max(r1 => r1.Id);
myvalue も null になる可能性があることに注意してください。したがって、次のようなことをすると:
int someInt = (int) myvalue;
明らかに例外が発生します。
したがって、修正は次のようになります。
int someInt =(int) ( myvalue ?? 0 );