当Linq查询返回空值时如何返回null?

How to return null when the Linq query returns empty value?

提问人:Kiran Shahi 提问时间:8/28/2018 更新时间:8/28/2018 访问量:3871

问:

我有以下代码从列表中获取值。

GetList().SingleOrDefault(x => x.Key == "MyKey").MyValue;

当列表中有带值的属性时,它可以正常工作,但是当列表中没有带值的属性时,它会抛出一个 .我怎样才能返回null值而不是异常。KeyMyKeyKeyMyKeyNullReferenceException

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
C# LINQ NullReferenceException

评论


答:

7赞 Access Denied 8/28/2018 #1

用?。和?[] null 条件运算符。它在执行成员访问 (?.) 或索引 (?[]) 操作之前测试左侧操作数的值是否为 null;如果左侧操作数的计算结果为 null,则返回 null。

GetList().SingleOrDefault(x => x.Key == "MyKey")?.MyValue;
2赞 Prem 8/28/2018 #2

您可以使用以下代码

var result = GetList().SingleOrDefault(x => x.Key == "MyKey");
if(result != null)
{
  //Add your logic
}
1赞 Kalpesh Rajai 8/28/2018 #3

在 LINQ 中处理 Null 的更安全方法。

GetList().Where(x => x.Key == "MyKey").Select(S=>S.MyValue).SingleOrDefault();

评论

0赞 Kiran Shahi 8/28/2018
嗨,Kalpesh,您能否解释一下此代码如何处理 null 异常