В запросе LINQ ниже я хочу вернуть идентификатор ContractorId, найденный в таблице «Подрядчики». Не все люди в таблице контактов находятся в таблице подрядчиков. Что я действительно хочу, так это список ContractorIds для тех подрядчиков, которые отвечают критериям. ContractorId не совпадает с ContactId.
var contractorsWithCertsFor2010 = dc.Contacts.Where(x => x.Contractors
.Any(d => d.ContractorStatus
.Any(date => date.StatusDate.Year >= 2010)))
.Select(x => x.Contractors
.Select(dr => dr.ContractorId));
IEnumerable<int> differenceQuery = allPeople.Except(contractorsWithCertsFor2010);
allPeople - это IQueryable<Int>
, но подрядчики сCertsFor2010 - это IQueryable<IEnumerable<Int>>.
Что-то не так. Множественный .Select () вызывает IQueryable<IEnumerable<Int>>
, поэтому я ищу способ устранить один из .Select () и получить возврат
IQueryable<Int>
Есть предложения? Спасибо!
Решение:
Одно решение опубликовано в ответе ниже. Я создал другое решение, прежде чем увидеть это. В моем решении я начал с таблицы «Подрядчики» вместо таблицы «Контакты», исключив один слой и один оператор .Select ().