首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中对列表进行分组和求和

问在C#中对列表进行分组和求和
EN

Stack Overflow用户
提问于 2012-09-18 00:50:05
回答 2查看 461关注 0票数 2

我在C#里有一个列表。

代码语言:javascript
复制
A,1
B,2
C,3
A,4
B,5

我想以列表的形式返回结果:

代码语言:javascript
复制
A,5
B,7
C,3

所以按第一列分组,然后对第二列求和。

我该怎么做呢?很高兴使用LINQ。声明和代码,如下所示:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        List<MyList> list = new List<MyList>();

        list.Add(new MyList() { Letter = "A", Value = 1 });
        list.Add(new MyList() { Letter = "B", Value = 2 });
        etc... 
    }
}

class MyList
{
    public string Letter { get; set; }
    public long Value { get; set; }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-18 00:52:52

听起来你想要:

代码语言:javascript
复制
var results = list.GroupBy(x => x.Letter, x => x.Value)
                  .Select(g => new { Letter = g.Key, Sum = g.Sum() });

(不清楚您的类型是什么,但希望您能从中获得所需的列表。)

有一个重载的GroupBy,它可以让你在一个调用中完成所有这些,但我个人发现上面的版本更简单。

票数 4
EN

Stack Overflow用户

发布于 2012-09-18 00:53:05

代码语言:javascript
复制
var results = data.GroupBy(item => item.Letter)
.Select(group => new
{
  Letter = group.Key,
  Count = group.Sum(item => item.Value),
});

只要用"A“、"B”、"C“等属性替换Letter,用1、2、3等属性替换Value即可。如果A,1是字符串,而不是有两个属性的类,则需要解析该字符串。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12463808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档