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
C# 在linq中使用之前如何检查null?_C#_Linq - Fatal编程技术网

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

C# 在linq中使用之前如何检查null?,c#,linq,C#,Linq,我有一个包含另一个对象的对象列表 List<MyClass> myClass = new List<MyClass>(); 事情有时是“MyOtherObject”为空。如何检查此项?很简单,只需添加一个和子句来检查它是否为空: myClass.Where(x => x.MyOtherObject != null && x.MyOtherObject.Name = "Name").ToList(); 您只需检查谓词是否为null myClass.

我有一个包含另一个对象的对象列表

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

事情有时是“MyOtherObject”为空。如何检查此项?

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

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

您只需检查谓词是否为null

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

我会这样做:

myClass.Where(x => x.MyOtherObject != null)
       .Where(y => y.MyOtherObject.Name = "Name")
       .ToList();
从C#6开始,您还可以使用
?。

myClass.Where(x => x.MyOtherObject?.Name == "Name").ToList();
如果
MyOtherObject
为null,这将基本上将
Name
属性解析为null,这将导致与
“Name”
的比较失败

你是说
==“Name”
myClass.Where(x => x.MyOtherObject?.Name == "Name").ToList();