0

次のクエリを実行していますが、例外で失敗します。

具体化された値が null であるため、値型 'Int32' へのキャストが失敗しました。

var myvalue = conn.Employees.Where(r => r.LastName == LastName).Max(r1 => r1.Id);

Max() を取得し、1 行のコードで null を考慮する方法はありますか?

4

1 に答える 1

3

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 );
于 2013-10-24T18:30:35.847 に答える