Linq嵌套分组实例

来源:互联网 发布:php开源类库 编辑:程序博客网 时间:2024/06/04 18:54

新建控制台应用程序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 + " }");}

执行结果如下图所示。

 

分析说明

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

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

 

0 0
原创粉丝点击