Linq嵌套分组实例

新建控制台应用程序GroupByExp,准备示例数据。

public class ExampleModel
{
    public int C1 { get; set; }//列1
    public string C2 { get; set; }//列2
}
List<ExampleModel> listExampleModel = new List<ExampleModel>();
listExampleModel.Add(new ExampleModel() { C1 = 1, C2 = "b"});
listExampleModel.Add(new ExampleModel() { C1 = 1, C2 = "a"});
listExampleModel.Add(new ExampleModel() { C1 = 2, C2 = "a"});
listExampleModel.Add(new ExampleModel() { C1 = 2, C2 = "a"});
listExampleModel.Add(new ExampleModel() { C1 = 3, C2 = "c"});
listExampleModel.Add(new ExampleModel() { C1 = 4, C2 = "a"});

嵌套分组实现

通过Linq实现嵌套分组,分组包含两步:

(1)按照C1进行分组(得到下图左半部效果)

(2)再按照C2进行分组(得到下图右半部效果)

 

下面给出嵌套分组及结果输出的代码。

var exampleModelGroup = listExampleModel.GroupBy(it => it.C1).GroupBy(it => it.First().C2);
List<ExampleModel> listResult = new List<ExampleModel>();
foreach (var group1 in exampleModelGroup)
{
     foreach (var group2 in group1)
     {
          listResult.AddRange(group2.ToList());
     }
}
foreach(var exampleModel in listResult)
{
     Console.WriteLine("{ C1 = " + exampleModel.C1 + ", C2 = " + exampleModel.C2 + " }");
}

执行结果如下图所示。

 

分析说明

分组及结果输出的详细过程如下图所示。

嵌套分组操作中,我们要想获取最终分组中的成员信息的话,可以按照本文所述方法完成,本质上就是遍历。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值