Как объединить два оператора LINQ в один для выполнения list2.Except (list1)? - PullRequest
0 голосов
/ 20 января 2011

В настоящее время у меня есть следующие запросы LINQ. Как я могу объединить два запроса в один. По сути, напишите запрос LINQ, чтобы вернуть результаты, которые я получил бы от

IEnumerable<int> deltaList = people2010.Except(allPeople);

кроме одного запроса.

var people2010 = Contacts.Where(x => x.Contractors
.Any(d => d.ContractorsStatusTrackings
.Any(date => date.StatusDate.Year >= 2010)))
.Select(x => x.ContactID);

var allPeople = Contacts.Where(x => x.Contractors
.Any(m => m.ContactID == x.ContactID))
.Select(x=> x.ContactID); 

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 января 2011

Почему вы не можете просто сделать Except, как вы делаете?Не забывайте, что переменные people2010 и allPeople - это просто запросы, а не данные.Почему бы просто не использовать их как есть?

Если это по какой-то причине неприемлемо, пожалуйста, дайте нам больше информации - например, есть ли это в LINQ to Object, LINQ to SQL и т. Д., И что не так с простым использованиемЗа исключением.

0 голосов
/ 20 января 2011

Похоже, вы просто ищете более элегантный способ написания запроса.Я считаю, что это более элегантный способ написания ваших комбинированных запросов:

var deltaList =
    from contact in Contacts
    let contractors = contact.Contractors
    where contractors.Any(ctor => ctor.ContractorStatusTrackings
                                      .Any(date => date.StatusDate.Year >= 2010))
          && !contractors.Any(m => m.ContactID == contact.ContactID)
    select contact.ContactID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...