C#6空条件运算符检查.Any()?

Joh*_*hnC 5 c# c#-6.0

在这里显示的示例(以及许多其他网站上)关于空条件运算符的示例中,它表明了这一点

int? first = customers?[0].Orders.Count(); 
Run Code Online (Sandbox Code Playgroud)

可用于获取第一个客户的计数.但是此声明不会检查集合中是否存在客户,并且可能会使索引超出范围异常.什么应该是正确的(最好是单行的)声明,负责检查元素的存在?

i3a*_*non 6

null条件运算符用于有条件地访问,null但这不是您遇到的问题.

您正在尝试访问一个空数组.您可以将其转换为FirstOrDefault使用以下操作符访问null的情况:

int? first = customers.FirstOrDefault()?.Orders.Count(); 
Run Code Online (Sandbox Code Playgroud)

如果数组不为空,它将对第一个项进行操作,如果为空FirstOrDefault则将返回null由null条件运算符处理的数组.

编辑:正如评论中提到的那样,如果您正在寻找另一个项目而不是第一个项目,您可以使用ElementAtOrDefault而不是FirstOrDefault