如何检查空之前,我在linq使用

本文关键字:我在 linq 使用 何检查 检查 | 更新日期: 2023-09-27 17:49:45

我有一个对象列表,其中包含另一个对象。

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

我想这样做一些linq

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

有时候"MyOtherObject"是空的。我如何检查这个?

如何检查空之前,我在linq使用

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

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

从c# 6开始,您还可以使用空条件运算符?.:

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

如果MyOtherObject为空,则本质上将Name属性解析为空,这将导致与"Name"的比较失败。

在线试试

你可以让你的谓词检查为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();