如果找不到值,如何在LINQ查询中为可为null的int处理null
这里我使用的是简单列表,其中一个ageToString列为null 如果找不到值,我将签入linq查询,然后返回null。但值不能为null,将出现错误如果找不到值,如何在LINQ查询中为可为null的int处理null,linq,Linq,这里我使用的是简单列表,其中一个ageToString列为null 如果找不到值,我将签入linq查询,然后返回null。但值不能为null,将出现错误 var list = new[] { new { AgeFrom = "0", AgeTo="24"}, new { AgeFrom = "70", AgeTo= (string)null} }.ToList(); var result = from r in list
var list = new[]
{
new { AgeFrom = "0", AgeTo="24"},
new { AgeFrom = "70", AgeTo= (string)null}
}.ToList();
var result = from r in list
select new EmployeeDTO
{
//AgeFrom Column is int? in DTO
AgeFrom = Convert.ToInt32(r.AgeFrom),
//AgeTo Column is int? in DTO
AgeTo = Convert.ToInt32(r.AgeTo ?? null)
}
一种选择是改变:
AgeTo = Convert.ToInt32(r.AgeTo ?? null)
致:
语句
r.AgeTo??null
是的一个例子,在您的例子中,它本质上是说,如果r.AgeTo
是null
,则使用null
。由于这不是您试图实现的目标,实际上您正在将null
传递到Convert.ToInt32
,这会导致错误。一个选项是更改:
AgeTo = Convert.ToInt32(r.AgeTo ?? null)
致:
语句r.AgeTo??null
是的一个例子,在您的例子中,它本质上是说,如果r.AgeTo
是null
,则使用null
。由于这不是您试图实现的目标,实际上您正在将null
传递到Convert.ToInt32
,这会导致您的错误。尝试以下操作:
AgeTo = String.IsNullOrEmpty(r.AgeTo) ? (int?)null : (int?)Convert.ToInt32(r.AgeTo);
这使您的代码:
var list = new[]
{
new { AgeFrom = "0", AgeTo="24"},
new { AgeFrom = "70", AgeTo= (string)null}
}.ToList();
var result = from r in list
select new EmployeeDTO
{
//AgeFrom Column is int? in DTO
AgeFrom = Convert.ToInt32(r.AgeFrom),
//AgeTo Column is int? in DTO
String.IsNullOrEmpty(r.AgeTo) ? (int?)null : (int?)Convert.ToInt32(r.AgeTo)
};
Convert.ToInt32无法将null转换为整数,这将始终引发异常。请尝试以下操作:
AgeTo = String.IsNullOrEmpty(r.AgeTo) ? (int?)null : (int?)Convert.ToInt32(r.AgeTo);
这使您的代码:
var list = new[]
{
new { AgeFrom = "0", AgeTo="24"},
new { AgeFrom = "70", AgeTo= (string)null}
}.ToList();
var result = from r in list
select new EmployeeDTO
{
//AgeFrom Column is int? in DTO
AgeFrom = Convert.ToInt32(r.AgeFrom),
//AgeTo Column is int? in DTO
String.IsNullOrEmpty(r.AgeTo) ? (int?)null : (int?)Convert.ToInt32(r.AgeTo)
};
Convert.ToInt32无法将null转换为整数,这将始终引发异常。您正在将
null
转换为int
但DTO中的AgeTo列可为null int不管它在DTO中是什么,Convert.ToInt32()不接受null参数此代码按原样为我工作,我不明白这个问题。您正在将null
转换为int
,但DTO中的AgeTo列可以为null,int不管它在DTO中是什么,Convert.ToInt32()不接受null参数此代码按原样为我工作,我不理解此问题。无法确定获取此错误类型的条件表达式,因为“”和“int”之间没有隐式转换。请向正在设置的值添加显式强制转换:(int?)null:(int?)Convert.ToInt32(r.AgeTo)
是,查看了可为null的属性,感谢@Burnsbageting value不能为null error…参数null exception设置此错误类型的条件表达式无法确定,因为“”和“int”之间没有隐式转换将显式转换添加到正在设置的值:(int?)null:(int?)Convert.ToInt32(r.AgeTo)
是,查看了可为null的属性,谢谢@BurnsBAGetting值不能为null错误…参数null异常