Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何获取可能为null的Max()?_.net_Linq_C# 4.0 - Fatal编程技术网

.net 如何获取可能为null的Max()?

.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

我正在运行以下查询,但由于出现异常而失败:

转换为值类型“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);

// 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
a
null
?@Jehof,如果不是,它就没有任何意义。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于
IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含
null
,但
Id
是一个不可为null的属性。如果属性
Id
a
null
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于
IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含
null
,但
Id
是一个不可为null的属性。如果属性
Id
a
null
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于
IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含
null
,但
Id
是一个不可为null的属性。如果属性
Id
a
null
,则该属性是一个没有意义的属性。“应该是0。”格伦,你怎么知道的?他的问题不清楚,对我来说,给出有效答案的信息缺失。我已经在@4thSpace更新了我的答案。检查它。1)这是LINQ到对象吗?或者其他的林克风味?2) 您确定问题在您的查询中吗?如果这是基于
IQueryable
的LINQ风格之一,那么问题可能是由您的类与数据库不匹配引起的。例如,数据库可能包含
null
,但是
Id
是一个不可为空的属性。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息。那么导致错误的不是linq表达式,或者您没有在问题中提供足够的信息你的问题。那么导致错误的不是linq表达式,或者你没有在问题中提供足够的信息。