LINQ Group by с несколькими значениями - PullRequest
0 голосов
/ 26 октября 2018

Итак, у меня есть простой класс Person:

public class Person
{
    internal int PersonID;
    internal string car;
    internal int count;
}

, и я хочу сгруппировать по PersonID, чтобы я получил список всех автомобилей и сумму всех подсчетов:

public class Result
{
    public int PersonID;
    public List<string> cars;
    public int sum;
}

Я знаю, как группировать и создавать суммирование:

var sums = from foo in persons
       group foo by foo.PersonID into groupings

       select new Result
       {
           PersonID = groupings.Key,               
           sum = groupings.Sum(g => g.count)
       };

Но как я могу создать список автомобилей в Result?

1 Ответ

0 голосов
/ 26 октября 2018

Это может быть один пример с anonymous class, но он должен совпадать с Result:

List<Person> p = new List<Person>
{
    new Person {PersonID = 1, car = "Audo", count = 1},
    new Person {PersonID = 1, car = "Bmw", count = 2},
    new Person {PersonID = 1, car = "Reno", count = 3},
    new Person {PersonID = 2, car = "Audi", count = 1},
    new Person {PersonID = 3, car = "Audi", count = 1},
};

var res = p.GroupBy(i => i.PersonID).Select(g =>
    new {
            ID = g.Key, 
            Cars = g.Select(_ => _.car).ToList(), 
            Count = g.Sum(_ => _.count)
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...