我正在运行以下查询,但它失败并出现异常:
转换为值类型“Int32”失败,因为具体化值为空。
var myvalue = conn.Employees.Where(r => r.LastName == LastName).Max(r1 => r1.Id);
有没有办法获得 Max() 并在一行代码中考虑空值?
假设 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 );