C# Linq嵌套分组问题:对整数列表执行二次分组
两次分组的实现方案
给定整数列表:
List<int> x = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
需要先按奇偶分组,再对每个分组内的元素按item >= 5二次分组,预期输出:[[1,3],[5,7,9]] , [[2,4], [6,8,10]]
你现有的代码完成了第一次分组,只需要修改Select部分,对每个奇偶分组再做一次分组即可:
var result = x .GroupBy(num => num % 2) // 第一次分组:按奇偶(1=奇数,0=偶数) .Select(oddEvenGroup => oddEvenGroup.GroupBy(item => item >= 5) // 二次分组:按是否>=5 .Select(subGroup => subGroup.ToList()) .ToList()) .ToList();
代码说明
- 第一层
GroupBy(num => num % 2):把原列表拆成奇数(键为1)和偶数(键为0)两个大分组 - 对每个大分组
oddEvenGroup,执行第二层GroupBy(item => item >= 5):将组内元素再拆分为>=5和<5两个子分组 - 最后把每个子分组转成
List,再把所有子组的集合转成List,最终得到符合预期的嵌套列表结构
内容的提问来源于stack exchange,提问作者Preem Palver2
相关产品推荐
相关产品推荐

