返回linq和的输入序列的元素

J. *_*amp 4 c# linq

假设我有一个简单的列表,结构如下2列表:


letter|number

     a|1

     a|7

     b|2

     b|5
Run Code Online (Sandbox Code Playgroud)

我希望有一个Linq查询在"letter"列上分组,对"number"列的分组元素求和,另外还返回数组中的求和元素.这将导致下表:


a | 8 | {1,7}

b | 7 | {2,5}
Run Code Online (Sandbox Code Playgroud)

是)我有的:

public class GroupedRow {
    public int number { get; set; }
    public string letter { get; set; }
    public int[] elements { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并在该计划中:

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

即使我看到其他方法,我想在1 linq查询(如果可能),或另一种简单的快速方式.

Yac*_*sad 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();
Run Code Online (Sandbox Code Playgroud)