[英]Grouping and Summing a List in C#
我在C#中有一个列表,例如
A,1
B,2
C,3
A,4
B,5
我想以列表形式返回结果:
A,5
B,7
C,3
因此,按第一列分组,然后对第二列求和。
我该怎么做呢? 很高兴使用LINQ。 声明和代码如下:
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; }
}
听起来像你想要的:
var results = list.GroupBy(x => x.Letter, x => x.Value)
.Select(g => new { Letter = g.Key, Sum = g.Sum() });
(尚不清楚您的类型是什么,但希望您会从中得到所需的列表。)
GroupBy
的重载可以让您在一次调用中完成所有这些操作,但是我个人认为上述版本更简单。
var results = data.GroupBy(item => item.Letter)
.Select(group => new
{
Letter = group.Key,
Count = group.Sum(item => item.Value),
});
只需将Letter
替换为可以给您“ A”,“ B”,“ C”等的任何属性,并将Value
替换为可以给您的1,2,3等等的属性。如果A,1
是字符串,而不是具有两个属性的类,则需要解析该字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.