0

我正在运行以下查询,但它失败并出现异常:

转换为值类型“Int32”失败,因为具体化值为空。

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

有没有办法获得 Max() 并在一行代码中考虑空值?

4

1 回答 1

3

假设 Id 可以为空或扩展 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 回答