У меня есть эти карты в моем хранилище.
public IQueryable<AwType> GetAwTypes()
{
return from awt in _db.AwTypes
select new AwType
{
Id = awt.Id,
Header = awt.Header,
Description = awt.Description
};
}
public IQueryable<Aw> GetAws()
{
return from aw in _db.Aws
select new Aw
{
Id = aw.Id,
Bw = (from bw in GetBws()
where bw.Id == aw.Bw
select bw
).SingleOrDefault(),
AwType = (from awt in GetAwTypes()
where awt.Id == awAwType
select awt
).SingleOrDefault(),
AwAttribute = aw.AwAttribute
};
}
В сервисе я хочу получить количество Bws, сгруппированных по AwType как List<KeyValuePair<AwType, int>>
.
Когда я вызываю этот запрос linq:
var awGroups = from aw in _repository.GetAws()
group aw by aw.AwType into newGroup
select newGroup;
List<KeyValuePair<AwType, int>> RetGroups = new List<KeyValuePair<AwType, int>>();
foreach (var group in awGroups)
{
RetGroups.Add(new KeyValuePair<AwType, int>(group.Key, group.Count()));
}
return RetGroups;
Я получаю сообщение об ошибке, в котором говорится, что я не могу сгруппировать объект, который нужно сгруппировать по скалярному значению, например aw.AwType.Id.
Есть ли способ получить пары "AwType, int" за один вызов?