#c_sharp #linq
Нужно в массиве данных получить суммарное значение по полю разделенных по группам. Пример: IEnumerableMember Issue.Member decimal Issue.hours Нужно пройти по массиву Issue, сгруппировать данные по member и для каждой группы сосчитать суммарное значение hours Пытался следующим образом: issues .Where(w => w.Member != null) .Group(g => g.Member) .Select(s => { s.Key // Здесь могу получить только ключ, а как получить данные и дальше их начать суммировать? }); По окончанию выборка должна содержать пару значений .
Ответы
Ответ 1
Группировка поддерживает итерирование по ней, поэтому можно просто вызвать метод 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 будет содержать список объектов с ключом группировки и значением суммы для каждой группировки.Ответ 2
Или так: var data = from issue in issues group issue by issue.Member into g select new {g.Key, Sum = g.Sum(s => s.hours)};
Комментариев нет:
Отправить комментарий