假设我有一个简单的列表,结构如下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查询(如果可能),或另一种简单的快速方式.
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)