class Category
{
public string Name { get; set; }
public int Count { get; set;}
}
Name Count
AA 2
BB 3
AA 4
我有IEnumerable<Category>
并希望获得具有唯一名称和多个条目总和的类别列表
输出
Name Count
AA 6
BB 3
更新
class Category
{
public string Name { get; set; }
public int CountA { get; set;}
public int CountB { get; set;}
public string Phone { get; set;}
}
我如何总结两列。并且电话栏可以是最后一行或任何一行
答案 0 :(得分:5)
您的更新问题在电话号码方面并不完全清楚,但我怀疑您需要以下内容:
var query = from category in list
group category by category.Name into grouped
select new { Name = grouped.Key,
SumA = grouped.Sum(x => x.CountA),
SumB = grouped.Sum(x => x.CountB),
Phone = grouped.Last().Phone };
顺便说一下,将grouped.Last()
更改为grouped.First()
会更有效率。
以这种方式评估多个聚合通常不是非常有效。我和Marc Gravell开发的Push LINQ项目使其效率更高,但代价是不那么容易使用。如果您需要处理大量数据,可能需要查看它。
答案 1 :(得分:1)
var foo = new List<Category>() {
new Category() { Name = "AA", Count = 2},
new Category() { Name = "BB", Count = 3},
new Category() { Name = "AA", Count = 4}
};
var bar = foo.GroupBy(c => c.Name).Select(g => new Category(){ Name = g.Key, Count = g.Sum(c => c.Count) });