【问题标题】:How can i group by list in C# [duplicate]如何在 C# 中按列表分组 [重复]
【发布时间】:2020-02-13 07:14:42
【问题描述】:

假设我有一个类似下面示例的列表:

var myList = {
   {id = 1, price = 30},
   {id = 2, price = 20},
   {id = 3, price = 40},
   {id = 3, price = 60},
   {id = 1, price = 70},
   {id = 1, price = 20},
   {id = 2, price = 110},
};

我可以像这样在 sql 中做我想做的事:

SELECT id,SUM(price) FROM table GROUP BY id

但我想在 C# 中执行此操作。我想我可以为此使用 LINQ,但我不确定。你能帮帮我吗?

【问题讨论】:

    标签: c# sql list linq


    【解决方案1】:

    使用 Linq GroupBy()Sum()

    var myList = new[] {
        new { id = 1, price = 30},
        new { id = 2, price = 20},
        new { id = 3, price = 40},
        new { id = 3, price = 60},
        new { id = 1, price = 70},
        new { id = 1, price = 20},
        new { id = 2, price = 110},
        };
    
    
    var result = myList.GroupBy(x => x.id).Select(x => new { id = x.Key, price = x.Sum(y => y.price)});
    

    https://dotnetfiddle.net/MhzJab

    【讨论】:

    • 但我没有数组。我有一个通用列表。像 List myList。当我输入 myList.GroupBy() 时。它说 myList 没有 GroupBy 方法
    • @Mirzaloglu using System.Linq; - 在dotnetfiddle.net/MhzJab查看我的示例
    • 谢谢!但我还要问一件事。我有一个错误,例如:无法将类型 'System.Collections.Generic.List' 隐式转换为 'System.Collections.Generic.List'
    • 我不知道你的类定义,但Select() 部分应该类似于.Select(x => new Test(){id = x.Key, price = x.Sum(y => y.price)}).ToList()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2016-11-12
    • 2021-08-21
    • 1970-01-01
    • 2018-03-19
    • 2021-02-03
    相关资源
    最近更新 更多