【问题标题】:Grouping a list with specified fields and then have all fields back in list使用指定字段对列表进行分组,然后将所有字段重新放入列表中
【发布时间】:2015-11-04 06:14:11
【问题描述】:

我有一个包含 5 个字段 x1、x2、x3、x4、x5 的列表(mylist) 我想按 x1 和 x2 按 mylist 分组,然后有一个新列表 resultList ,其中包含按 x1 和 x2 分组的所有 5 个字段 x1、x2、x3、x4、x5。 我想用 Linq 来做

    var result = mylist.GroupBy(row => new { row.x1, row.x2}) 

这给出了一个包含两个字段 row.x1、row.x2 的列表。我怎样才能得到其余的字段

编辑:假设这是我的列表: x1 x2 x3 x4 x5


 1     '=C'    'a'    'b'    'c'
 2     '+A'    'd'    'e'    'f'     
 1     '=C'    'g'    'h'    'i'
 4     '=C'    'j'    'k'    'l'

我想要这个结果:

 x1    x2     x3     x4     x5

 1     '=C'    'a'    'b'    'c'    
 1     '=C'    'g'    'h'    'i'
 4     '=C'    'j'    'k'    'l'
 2     '+A'    'd'    'e'    'f' 

【问题讨论】:

    标签: c# visual-studio visual-studio-2010


    【解决方案1】:

    在分组后,你想得到哪个 x3、x4、x5 值,比如哪个具有最小值或最大值等。

    x1 | x2 | x3 |
    一个 | B|1
    一个 | B|2


    当你在 X1 和 X2 上分组时,它只给出 A , B 但你必须告诉你想要获得 x3 列的哪个值。

    【讨论】:

    • 如果分组后有十行,如果它只给出两行,那么你想获取 x3,x4,x5 的哪个值?你必须说出来。
    【解决方案2】:
     var res = (from m in mylist
                group m by new {m.x1 , m.x2} into grouped
                select new { key = grouped.Key , values = grouped.ToList() }).ToList();
                foreach (var re in res)
                {
                    var values = re.values;
                    //get other fields from values
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      相关资源
      最近更新 更多