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

发布于 2024-10-31 13:14:52 字数 262 浏览 1 评论 0原文

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

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

我想做一些像这样的 linq

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

事情有时“MyOtherObject”为空。我该如何检查这一点?

I have an list of objects that contains another object in it.

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

I want to do some linq like this

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

Thing is sometimes "MyOtherObject" is null. How do I check for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

记忆里有你的影子 2024-11-07 13:14:52

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

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

Simple, just add an AND clause to check if it's not null:

myClass.Where(x => x.MyOtherObject != null && x.MyOtherObject.Name = "Name").ToList();
红墙和绿瓦 2024-11-07 13:14:52

从 C# 6 开始,您还可以使用 null 条件运算符 ?.

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

如果 MyOtherObject 为 null,这实际上会将 Name 属性解析为 null,这将导致失败与“名称” 进行比较。

在线尝试

As of C# 6, you can also use a null conditional operator ?.:

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

This will essentially resolve the Name property to null if MyOtherObject is null, which will fail the comparison with "Name".

Try it online

青春如此纠结 2024-11-07 13:14:52

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

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

You can just make your predicate check for null...

myClass.Where(x => (x.MyOtherObject == null) ? false : x.MyOtherObject.Name == "Name").ToList();
两人的回忆 2024-11-07 13:14:52

我会做这样的事情:

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

I would do something like this:

myClass.Where(x => x.MyOtherObject != null)
       .Where(y => y.MyOtherObject.Name = "Name")
       .ToList();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文