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