фильтр linq поиск по значениям - PullRequest
4 голосов
/ 10 февраля 2011

Я бы хотел отфильтровать запрос linq на основе его значений:

поиск:

ILookup<int, Article> lookup

вот что у меня так далеко, что не работает:

IList<int> cityIndexes = GetCityIndexesByNames(cities);    

lookup = lookup
                .Where(p => p.Any(x => cityIndexes.Contains((int)x.ArticleCity)))
                .SelectMany(l => l)
                .ToLookup(l => (int)l.ArticleParentIndex, l => l);

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

1 Ответ

6 голосов
/ 10 февраля 2011

Проблема с кодом, который вы опубликовали, заключается в том, что вы получаете все статьи с тем же идентификатором, что и любая статья, имеющая соответствующий индекс города. Если вы сначала распакуете группы, проблем не будет.

IList<int> cityIndexes = GetCityIndexesByNames(cities);

lookup = lookup
  .SelectMany(g => g)
  .Where(article => cityIndexes.Contains((int)article.ArticleCity)))
  .ToLookup(article => (int)article.ArticleParentIndex); 

Или

lookup =
(
  from g in lookup
  from article in g
  where cityIndexes.Contains((int)article.ArticleCity)))
  select article
).ToLookup(article => (int)article.ArticleParentIndex); 
...