使用指定字段对列表进行分组,然后将所有字段放回列表中

时间:2015-11-04 06:14:11

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

我有一个包含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的列表。我怎样才能得到其余的字段

编辑:假设这是mylist:       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' 

2 个答案:

答案 0 :(得分:0)

在分组之后,您希望获得具有最小值或最大值等的x3,x4,x5值。

x1 | x2 | x3 |
  A | C | 1个
  A |乙| 2


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

答案 1 :(得分:0)

 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
            }