2015-02-07 3 views
2

Я хочу, чтобы составить список отчетов класса из списка лиц с группой поGroupBy в Enumerable методом

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() //???? 
}); 

Существует что-то неправильно в операторе отбора, как я могу посчитать сумму возрастов?

+0

Посмотрите на этот ответ http://stackoverflow.com/questions/19285443/group-by-count-and-lambda-expression – CheGueVerra

ответ

4

Вы должны указать, какое свойство подводить:

var res = list.GroupBy(p => p.Country, p => p) 
    .Select(p => new Report 
    { 
     Country = p.Key, 
     SumAge = p.Sum(x => x.Age) 
    }); 
Смежные вопросы