我想从具有分组依据的人员列表中创建报告类列表
class Report
{
public string Country { get; set; }
public double SumAge { get; set; }
}
class Person
{
public int Age { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
var list = new List<Person>
{
new Person {Age = 35, Country = "Spain", Name = "John"},
new Person {Age = 45, Country = "Spain", Name = "Alex"},
new Person {Age = 55, Country = "Hungary", Name = "Bob"},
new Person {Age = 23, Country = "Spain", Name = "Eve"},
new Person {Age = 39, Country = "India", Name = "Rose"},
new Person {Age = 25, Country = "India", Name = "Peter"},
new Person {Age = 51, Country = "Hungary", Name = "Rob"},
new Person {Age = 23, Country = "India", Name = "Jeff"},
};
list.GroupBy(p => p.Country, p => p)
.Select(p => new Report
{
Country = p.Key,
SumAge = p.Sum() //????
});
select语句有问题,如何计算年龄总和?
最佳答案
您需要指定要求和的属性:
var res = list.GroupBy(p => p.Country, p => p)
.Select(p => new Report
{
Country = p.Key,
SumAge = p.Sum(x => x.Age)
});
关于c# - Enumerable 方法中的 GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383830/