static void Main(string[] args)
{
List<User> products = new List<User>()
{
new User(){ Id="1", Name="n1",count1=1},
new User(){ Id="1", Name="n1",count1=2},
new User(){ Id="2", Name="n2",count1=3},
new User(){ Id="2", Name="n2",count1=4},
};
var group = products.GroupBy(x => new { x.Id, x.Name })
.Select(g => new
{
Id = g.Key.Id,
Name = g.Key.Name,
count1 = g.Sum(t => t.count1)
}).ToList();
Func<User, dynamic> exp = x => new { x.Id, x.Name };
var group1 = products.GroupBy(exp)
.Select(g => new
{
Id = g.Key.Id,
Name = g.Key.Name,
count1 = g.Sum(t => t.count1)
}).ToList();
Func<User, GroupUser> func = x => new GroupUser { Id = x.Id, Name = x.Name };
var group2 = products.GroupBy(func)
.Select(g => new
{
Id = g.Key.Id,
Name = g.Key.Name,
count1 = g.Sum(t => t.count1)
}).ToList();
}
public class User
{
public string Id { get; set; }
public string Name { get; set; }
public int count1 { get; set; }
}
public class GroupUser
{
public string Id { get; set; }
public string Name { get; set; }
}
//分组后进行排序返回第一个
List<QualityPerformanceData> maxGroup = qualityPerformanceDataList
.DistinctBy(d => new { d.AnalysisItemCode, d.Lower, d.Upper })
.OrderBy(x => x.AnalysisItemName)
.GroupBy(x => x.AnalysisItemCode)
.Select(group => group.OrderByDescending(item => item.Lower).First())
.ToList();
输出:
foreach (var item in tt)
{
MessageBox.Show(item.Id + "---" + item.Name + "---" + item.count1);
}
本文介绍使用C#进行集合的分组与聚合操作,包括如何使用GroupBy方法按特定属性分组,并进行求和等聚合计算。同时,演示了不同方式实现分组聚合,如使用匿名类型、Func委托及自定义类型。

3685

被折叠的 条评论
为什么被折叠?



