Как использовать лямбда-выражение Linq для запроса как агрегатных, так и подробных значений - PullRequest
0 голосов
/ 09 февраля 2020
var query = from i in listModel
group i by new { i.ClassId, i.Gender } into g
orderby g.Key.ClassId, g.Key.Gender
from item in g
select new
{
    g.Key.ClassId,
    g.Key.Gender,
    item.Name,
    Count = g.Count(),
    MaxAge = g.Max(i => i.Age),
    MinAge = g.Min(i => i.Age)
};

Используя этот код, я могу узнать агрегированное значение (Count, MaxAge, MinAge) и подробное значение (Name) перед одновременной группировкой. Как можно реализовать вышеприведенное утверждение с помощью лямбда-выражения Линка?

1 Ответ

0 голосов
/ 09 февраля 2020

Попробуйте объединить GroupBy, OrderBy и SelectMany методы расширения

var query = listModel.GroupBy(i => new { i.ClassId, i.Gender })
    .OrderBy(g => g.Key.ClassId)
    .ThenBy(g => g.Key.Gender)
    .SelectMany(g => g, (g, item) => new
    {
        g.Key.ClassId,
        g.Key.Gender,
        item.Name,
        Count = g.Count(),
        MaxAge = g.Max(i => i.Age),
        MinAge = g.Min(i => i.Age)
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...