c#空条件运算符是否可以与linq方法一起工作?
本文关键字:方法 linq 一起 工作 条件运算符 是否 | 更新日期: 2023-09-27 18:06:20
我正在尝试使用猫王操作符来实现这样的事情
List<string> list = new List<string> { "str1", "str2", "str3"};
string searchkey = "str4"; // this does not exist in the list so will use elvis operator before picking the first from the resulting sequence.
var result = list.where(s=>(s.Contains(searchkey)))?.First();
我期望结果为null,但代码实际上抛出了一个异常。
问题是
list.Where(s=>(s.Contains(searchkey)))
不返回null
;它返回一个空序列,这是不一样的。
如果您想在对象序列为空时获得null
,则使用FirstOrDefault
:
var result = list.FirstOrDefault(s=>(s.Contains(searchkey)));
注意: c#版本的"Elvis Operator"是||
,而不是?.
。代码中的操作符叫做空条件操作符。
因为Where
运算符返回任何要枚举的值,而First()
不能求值。您可以使用FirstOrDefault()