5
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;} 
}

我将如何总结两列。并且电话列可以是最后一行或任意行

4

2 回答 2

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项目以不那么容易使用为代价使其效率更高。如果您需要处理大量数据,您可能需要研究它。

于 2009-03-29T07:54:50.480 回答
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) });
于 2009-03-29T06:28:42.810 回答