.net 如何获取可能为null的Max()?
我正在运行以下查询,但由于出现异常而失败: 转换为值类型“Int32”失败,因为具体化的值为null.net 如何获取可能为null的Max()?,.net,linq,c#-4.0,.net,Linq,C# 4.0,我正在运行以下查询,但由于出现异常而失败: 转换为值类型“Int32”失败,因为具体化的值为null 是否有一个方法获得最大(),也考虑一行代码中的空值?< P>使用假设为ID为空的CaleleSCE 或扩展where条件: // Coallesce- probably not the best thing here var myvalue = conn.Employees.Where(r => r.LastName == LastName).Max(r1 => r1.Id ?? 0
是否有一个方法获得最大(),也考虑一行代码中的空值?
< P>使用假设为ID为空的CaleleSCE 或扩展where条件:// 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 );
假设Id是可空的,则使用coallesce 或扩展where条件:
// 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 );
假设Id是可空的,则使用coallesce 或扩展where条件:
// 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 );
假设Id是可空的,则使用coallesce 或扩展where条件:
// 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 );
属性
Id
anull
?@Jehof,如果不是,它就没有任何意义。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含null
,但Id
是一个不可为null的属性。如果属性Id
anull
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含null
,但Id
是一个不可为null的属性。如果属性Id
anull
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含null
,但Id
是一个不可为null的属性。如果属性Id
anull
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含null
,但是Id
是一个不可为空的属性。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息你的问题。那么导致错误的不是linq表达式,或者你没有在问题中提供足够的信息。