Страницы

Поиск по вопросам

четверг, 1 ноября 2018 г.

Пример группировки данных в LINQ

Нужно в массиве данных получить суммарное значение по полю разделенных по группам.
Пример:
IEnumerable Member Issue.Member decimal Issue.hours
Нужно пройти по массиву Issue, сгруппировать данные по member и для каждой группы сосчитать суммарное значение hours
Пытался следующим образом:
issues .Where(w => w.Member != null) .Group(g => g.Member) .Select(s => { s.Key // Здесь могу получить только ключ, а как получить данные и дальше их начать суммировать? });
По окончанию выборка должна содержать пару значений .


Ответ

Группировка поддерживает итерирование по ней, поэтому можно просто вызвать метод Sum()
var data = issues .Where(m => m != null) .Group(g => g.Member) .Select(s => new { s.Key, Sum = s.Sum(i => i.hours) });
// или .Select(s => Tuple.Create(s.Key, s.Sum(i => i.hours)));
data будет содержать список объектов с ключом группировки и значением суммы для каждой группировки.

Комментариев нет:

Отправить комментарий