Суммирование и группировка одинаковых элементов в List
В чем суть. Нужно создать отчет показывающий сколько продавали товаров за промежуток времени. Есть вот такой лист:
SearchList = context.Продажа.ToList();
SearchList = SearchList.Where(x => x.Дата_продажи >= DPFirstDate.SelectedDate && x.Дата_продажи <= DPSecondDate.SelectedDate).ToList();
Нужно представить список таким образом, чтобы количество проданных товаров в списке суммировалось, то-есть такой список:
Компьютерная мышь - 1
Коврик - 4
Коврик - 1
Компьютерная мышь - 3
Представлялся таким образом :
Коврик - 5
Компьютерная мышь - 4
Пробовал уже разные способы, но так ничего и не получилось. Пытаюсь пока так, но подчеркивается Номенклатура.Наименование
var result = SearchList
.GroupBy(x => x.Номенклатура.Наименование)
.Select(x => new Продажа() { Номенклатура.Наименование = x.Key, Количество = x.Sum(z => z.Количество) })
.ToList();
Если что, то название товара я получаю через - Номенклатура.Наименование, а количество находится в таблице Продажа, на которой лист, собственно, и основан. Заранее спасибо.
Ответы (1 шт):
Вы не можете использовать Object Initializer чтобы иницализировать свойства дочерних объектов.
Если класс Продажа создает класс Номенклатура в конструкторе, вы можете передать Наименование через параметр:
new Продажа(x.Key) { Количество = x.Sum(z => z.Количество) }
Если класс Продажа не создает Номенклатуру, тогда просто добавите вложенный Object Initializer:
new Продажа() { Номенклатура = new Номенклатура() { Наименование = x.Key }, Количество = x.Sum(z => z.Количество) }