c# - 返回 linq 和的输入序列的元素

标签 c# linq

假设我有一个结构为以下 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/

相关文章:

c# - 不同地区不同认证方式

C# - Lambda/LINQ - 从 Dictionary<string, string>[] 到 List<string[]> 的转换

c# - 如何动态创建谓词

c# - 使用 DataReader 将多行集中到列表中

c# - 使用 LINQ 在 ASP.NET MVC 中传递数据 - 疯狂

c# - 如果它是一个字符串,如何测试空值变量?

c# - 双败赛数据结构

c# - 使用接口(interface)获取列名时如何使用表达式动态构建LINQ查询?

c# - ASP.NET 4 路由问题

c# - 将 Expression<T, string>> 转换为 Expression<T, bool>>