我有一个包含其他对象的对象列表。
List<MyClass> myClass = new List<MyClass>();
我想像这样做一些linq
myClass.Where(x => x.MyOtherObject.Name = "Name").ToList();
有时“MyOtherObject”为空。我该如何检查?
答案 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"
的比较失败。
答案 3 :(得分:0)
我会做这样的事情:
myClass.Where(x => x.MyOtherObject != null)
.Where(y => y.MyOtherObject.Name = "Name")
.ToList();