2016-05-12 9 views
4

のは、私は、次の2列の表として構成単純なリストを持っているとしましょう:リターン要素


letter|number 

    a|1 

    a|7 

    b|2 

    b|5 

私はLINQクエリを持っていると思います列 'letter'にグループを追加し、列 'number'のグループ化された要素を合計し、加算された要素を配列に返します。次の表につながることになる。


a | 8 | {1,7} 

b | 7 | {2,5} 

私が持っているもの:

public class GroupedRow { 
    public int number { get; set; } 
    public string letter { get; set; } 
    public int[] elements { get; set; } 
} 

、プログラム中:

List<GroupedRow> listfromquery = numberletterlist.GroupBy(x => x.letter) 
    .Select(grp => new GroupedRow() { 
     number = grp.Sum(x => x.number) 
     letter = grp.key.letter 
     // elements= 
    }; 

私は他の方法を見ていてもこれを行うには、私は1 linqクエリでこれを行うと思います(可能ならばル)、または別の簡単な高速方法。

答えて

5

grpは要素群であり、IEnumerable<T>を実装しています。単にそれからnumberを選択して、このような配列に変換:これについて

List<GroupedRow> listfromquery = 
    numberletterlist.GroupBy(x => x.letter) 
    .Select(grp => new GroupedRow() 
    { 
     number = grp.Sum(x => x.number), 
     letter = grp.Key, 
     elements = grp.Select(x => x.number).ToArray() 
    }).ToList(); 
1

何?

elements = grp.Select(x => x.number).ToArray()