Linq - 如果field为null,则检查where子句中的条件

时间:2014-02-10 09:50:43

标签: c# linq

我有疑问 - 即使项目没有引用,如何检查where子句中的条件?

最基本的方式 - 我正在检查我的类中的字段,该字段可以为null。当我以这种方式检查它时,它将返回Null Reference Exception

 var soldOutProducts = from p in list 
            where p.destinataire.StartsWith("D") 
            select p; 

3 个答案:

答案 0 :(得分:4)

你能做到吗

var soldOutProducts = from p in list
                      where !string.IsNullOrEmpty(p.destinataire) and
                            p.destinataire.StartsWith("D")
                      select p;

答案 1 :(得分:2)

首先检查null,就像在循环中编写正常的C#代码一样。

where p.destinataire != null && p.destinataire.StartsWith("D")

如果p本身可以为null(即您的列表可以包含null元素),那么您还需要检查它:

where p != null && p.destinataire != null && p.destinataire.StartsWith("D")

请注意,如果您的查询表达式只是正在进行过滤,您可能需要使用点表示法:

var soldOutProducts = list.Where(p => p.destinataire != null && 
                                      p.destinataire.StartsWith("D"));

当查询变得复杂时,查询表达式非常有用 - 特别是在连接和分组时。

答案 2 :(得分:1)

 var soldOutProducts = from p in list 
            where p.destinataire != null && p.destinataire.StartsWith("D") 
            select p;