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();
我有以下代码从列表中获取值。
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();