C#中如何用LINQ统计嵌套列表里第3个元素≥50的子列表数量?
当然有更简洁高效的实现方式!用LINQ的Count方法就能把这段循环代码浓缩成一行,可读性和简洁性拉满:
int count = masterList.Count(subList => subList.ElementAt(2) >= 50);
简单拆解下这段代码:
Count方法接受一个谓词lambda表达式,会自动遍历masterList里的每个子列表- 对每个子列表,我们用
ElementAt(2)获取它的第三个元素(因为C#索引从0开始),判断是否满足>=50的条件 - 方法最终会直接返回所有符合条件的子列表数量
额外的细节优化:
如果你的子列表有可能元素数量不足3个(也就是不存在索引为2的元素),直接调用ElementAt(2)会抛出ArgumentOutOfRangeException。这种情况下可以先加个前置判断,避免异常:
int count = masterList.Count(subList => subList.Count() >= 3 && subList.ElementAt(2) >= 50);
另外,要是你的子列表实际是实现了IList<double>的类型(比如常用的List<double>),换成直接索引访问subList[2]会比ElementAt(2)更高效——因为ElementAt对于非IList的枚举类型需要遍历到指定索引位置,而直接索引访问是O(1)的操作:
int count = masterList.Count(subList => subList.Count() >= 3 && subList[2] >= 50);
内容的提问来源于stack exchange,提问作者DarthVegan
相关产品推荐
相关产品推荐

