假设我有一个结构为以下 2 列表的简单列表:
letter|number
a|1
a|7
b|2
b|5
我想要一个 Linq 查询,它对“字母”列进行分组,对“数字”列的分组元素求和,并另外返回数组中的求和元素。这将导致下表:
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 查询(如果可能)或其他简单快速的方法中执行此操作。
最佳答案
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();
关于c# - 返回 linq 和的输入序列的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182025/