ошибка присоединения к группе - PullRequest
1 голос
/ 16 февраля 2011

Мне нужно получить все не удаленные профили, количество успешных и общих активаций. Ключ (который связывает профили с журналами - поле «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();

вызывает ту же ошибку ...: (

1 Ответ

0 голосов
/ 07 марта 2011

Вот решение:

    var v1 = from log in repositoryLogs.GetAll()
             group log by log.DeviceClass
             into logs
             select new
                        {
                            DeviceClass = logs.First().DeviceClass
                        };
    var classes = v1.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...