Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
如果找不到值,如何在LINQ查询中为可为null的int处理null_Linq - Fatal编程技术网

如果找不到值,如何在LINQ查询中为可为null的int处理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

这里我使用的是简单列表,其中一个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 
                 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异常