在linq中使用之前如何检查null?

时间:2011-04-08 22:24:28

标签: c# linq

我有一个包含其他对象的对象列表。

List<MyClass> myClass = new List<MyClass>();

我想像这样做一些linq

myClass.Where(x => x.MyOtherObject.Name = "Name").ToList();

有时“MyOtherObject”为空。我该如何检查?

4 个答案:

答案 0 :(得分:30)

简单,只需添加一个AND子句来检查它是否为空:

myClass.Where(x => x.MyOtherObject != null && x.MyOtherObject.Name = "Name").ToList();

答案 1 :(得分:2)

你可以让你的谓词检查为空...

myClass.Where(x => (x.MyOtherObject == null) ? false : x.MyOtherObject.Name == "Name").ToList();

答案 2 :(得分:2)

从C#6开始,您还可以使用null conditional operator ?.

myClass.Where(x => x.MyOtherObject?.Name == "Name").ToList();

如果Name为null,这实际上会将MyOtherObject属性解析为null,这将使与"Name"的比较失败。

Try it online

答案 3 :(得分:0)

我会做这样的事情:

myClass.Where(x => x.MyOtherObject != null)
       .Where(y => y.MyOtherObject.Name = "Name")
       .ToList();