LINQ Left Outer Join с ошибкой создания групп и счетчиков - PullRequest
0 голосов
/ 05 октября 2011

Я создаю выражение запроса LINQ в LINQPad, которое использует левое внешнее соединение, группирует и подсчитывает. Запрос выдает следующую ошибку.

«AnonymousType # 1» не содержит определения «ContentTypeID» и нет метода расширения ContentTypeID, принимающего первый аргумент тип 'AnonymousType # 1' может быть найден (нажмите F4, чтобы добавить использование директива или ссылка на сборку)

Вот запрос.

from t1 in ContentTypes
from t2 in VwContentTRIGOF.Where(x => t1.ContentTypeID == x.ContentTypeID && new List<int> { 2588, 2227 }.Contains(x.ResearchAreaID)).DefaultIfEmpty()
where t1.IsActive == true
group new {t1, t2} by new { t1.ContentTypeID, t1.Label } into g
select new { g.Key.ContentTypeID, g.Key.Label, Disabled = g.Count(t => t.ContentTypeID == null) > 0 }

Ошибка высвечивает последнее использование ContentTypeID в последней строке, но я не могу организовать запрос для получения желаемого результата.

Есть предложения?

Спасибо.

1 Ответ

1 голос
/ 05 октября 2011

Каждый элемент вашей группы имеет записи t1 и t2, а не ContentTypeID, поэтому я подозреваю, что ваш окончательный select должен быть:

select new { g.Key.ContentTypeID, g.Key.Label,
             Disabled = g.Count(t => t.t2.ContentTypeID == null) > 0 }

(при условии, что вы хотите, чтобыt2 - если вы хотите получить значение t1, измените его соответствующим образом ... но, учитывая, что t1.ContentTypeID является частью ключа, это кажется маловероятным ... это просто счетчик групп.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...