Мне нужно получить все не удаленные профили, количество успешных и общих активаций. Ключ (который связывает профили с журналами - поле «DeviceClass»). Я придумал следующий запрос LINQ to SQL:
var v = from profile in repositoryProfiles.GetAll()
join logsCounted in
(
from log in repositoryLogs.GetAll()
where log.OperationType == EnrollmentLog.OperationTypeEnum.EnrollDevice
group log by log.DeviceClass into logs
select new
{
DeviceClass = logs.Key,
SuccessfulAmount = logs.Where(log=>string.IsNullOrEmpty(log.Error)).Count(),
OverallAmount = logs.Count()
}
) on profile.DeviceClass equals logsCounted.DeviceClass
where profile.Deleted==false
select new
{
Profile = profile,
SuccessAmount = logsCounted.SuccessfulAmount,
TotalAmount = logsCounted.OverallAmount
};
Попытка вызова v.ToList()
вызывает следующую ошибку:
Member access 'System.String Key' of
'System.Linq.IGrouping`2[System.String,CMCore.Data.Logging.IEnrollmentLog]'
not legal on type
'System.Linq.IGrouping`2[System.String,CMCore.Data.Logging.EnrollmentLog].
Вопрос 1 : Что не так с доступом к свойству Key?
Вопрос 2 : Как я могу реализовать вышеупомянутую идею?
EDIT:
Упрощенная версия:
var v1 = from log in repositoryLogs.GetAll()
group log by log.DeviceClass
into logs
select new
{
DeviceClass = logs.Key
};
var logsGroupped = v1.ToList();
вызывает ту же ошибку ...: (