Ответ 1
Здесь есть две проблемы:
- Результат
GroupBy
будет перечислимым типаIEnumerable<IGrouping<TKey, TSource>>
. ИнтерфейсIGrouping
имеет только одно свойство, к которому вы можете получить доступ,Key
, который является ключом, указанным в выраженииGroupBy
, и реализуетIEnumerable<T>
, чтобы вы могли выполнять другие операции Linq по результату. - Вам нужно указать имя свойства для анонимного типа, если оно не может быть выведено из выражения свойства или поля. В этом случае вы вызываете
Count
вIGrouping
, поэтому вам нужно указать имя для этого свойства.
Попробуйте следующее:
public IEnumerable<object> PorcentajeState(Guid id)
{
return _context.Sates.Where(a => a.Id == id)
.GroupBy(a => a.StateId)
.Select(g => new { g.Key, Count = g.Count() });
}
Эквивалент синтаксиса запроса будет
public IEnumerable<object> PorcentajeState(Guid id)
{
return from a in _context.Sates
where a.Id == id
group a by a.StateId into g
select new { a.Key, Count = g.Count() };
}
В любом случае, если вы хотите, чтобы первое свойство называлось StateId
вместо Key
, просто измените его на
new { StateId = g.Key, Count = g.Count() }