如何用C# LINQ筛选第二个元素大于1的子列表并执行foreach循环
使用C# LINQ筛选并遍历符合条件的子列表
咱们可以分两步轻松实现这个需求:先用LINQ的Where方法精准筛选出符合要求的子列表,再对筛选结果执行foreach循环。这里要特别注意一个边界问题——得先判断子列表的长度至少为2,不然直接取第二个元素(索引1)会抛出索引越界异常。
完整代码示例
假设你的原始列表是List<List<int>>类型,代码可以这么写:
// 示例原始列表 var parentList = new List<List<int>> { new List<int> {1, 0, 3}, new List<int> {2, 1, 4}, new List<int> {5}, // 长度不足2的子列表,会被自动过滤 new List<int> {3, 2, 6}, // 符合条件 new List<int> {4, 5, 7} // 符合条件 }; // 筛选逻辑:先确保子列表长度足够,再判断第二个元素大于1 var filteredLists = parentList.Where(subList => subList.Count >= 2 && subList[1] > 1); // 对筛选后的子列表执行foreach循环 foreach (var subList in filteredLists) { // 这里替换成你需要执行的业务逻辑,比如打印子列表内容 Console.WriteLine($"符合条件的子列表:{string.Join(", ", subList)}"); }
关键细节说明
- 避免索引越界:
Where委托里先检查subList.Count >= 2,这是很重要的前置判断,防止处理长度不足的子列表时出错。 - 延迟执行特性:LINQ的
Where是延迟执行的,只有当你遍历filteredLists时才会真正执行筛选逻辑,这样能保证性能最优。 - 简化链式写法:如果不需要单独存储筛选后的集合,也可以直接把筛选和循环合并成一行:
foreach (var subList in parentList.Where(s => s.Count >=2 && s[1]>1)) { // 执行你的业务逻辑 }
这样就精准实现了只对第二个元素大于1的子列表执行循环的需求。
内容的提问来源于stack exchange,提问作者user1693813
相关产品推荐
相关产品推荐

