如何在Linq查询中检查null

时间:2018-03-26 14:21:51

标签: c# linq

这个linq:

list.AddRange(from modelState in context.ModelState.Values 
              from error in modelState.Errors 
              select error.Exception.ToString());

如果有error.Exception则有效。但是,如果error.Exceptionnull,则会引发空引用错误。如何修改它以检查null?

1 个答案:

答案 0 :(得分:0)

添加Where子句:

from modelState in context.ModelState.Values 
from error in modelState.Errors 
where error.Exception != null
select error.Exception.ToString()

也许你会发现使用SelectMany更具可读性:

from m in context.ModelState.Values.SelectMany(v => v.Errors)
where m.Exception != null
select m.Exception.ToString()

如果您希望null项为error.Exception为null,请使用?.运算符:

context.ModelState.Values.SelectMany(v => v.Errors.Select(e => e.Exception?.ToString())