Вы уже сгруппировали элементы по статусу, поэтому g.Key
будет содержать значение статуса, а g
сам является перечислимым из сгруппированных элементов. Если вы хотите рассчитать их количество, используйте Count()
, например:
var counts = from item in Orders
group item by new { item.Status } into g
select new {status=g.Key, count=g.Count()};
Это вернет один объект для каждого значения статуса с его количеством. Получение разных столбцов для каждого статуса - это, по сути, поворот, преобразование строк в столбцы.
Однако в этом случае, если вы знаете имена статусов заранее, вы можете преобразовать результаты в словарь и получить счетчики по имени , например:
var dict=counts.ToDictionary(x=>x.status,x=>x.count);
var model= new SummaryEntity
{
New = dict.TryGetValue("New",out var c_n)
? c_n : 0,
InProgress = dict.TryGetValue("InProgress",out var c_p)
? c_p : 0,
Closed = dict.TryGetValue("Closed",out var c_c)
? c_c : 0,
};
Dictionary.TryGetValue
используется, чтобы избежать исключений, если значение статуса отсутствует