Linq 查询returns 空值时如何return null?

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

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

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

当列表中有 Key 属性 且值为 MyKey 时,它工作正常,但当没有 Key 属性 且值为 MyKey 在列表中它抛出一个 NullReferenceException。我怎样才能 return 空值而不是异常。

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

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

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

您可以使用下面的代码

var result = GetList().SingleOrDefault(x => x.Key == "MyKey");
if(result != null)
{
  //Add your logic
}

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

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