Использование существующего iqueryable для фильтрации другого iqueryable на Entity Framework - PullRequest
0 голосов
/ 28 марта 2011

У меня есть отношения многие ко многим (Сайты, Категории, КатегорииXSite), мне нужно получить фильтрацию всех категорий по определенным именам сайтов, поэтому я сделал домашнее задание и сделал это linq:

var filteredcategories = from c in context.Categories
                       from s in c.Sites
                       where s.Name.Contains(siteWord)
                       select c;   

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

var filteredcategories = from c in context.Categories
                       where c. Sites == FilterSites(siteWord)
                       select c; 

это мой метод фильтрации:

public IQueryable<Site> FilterSites(string word)
{
      return (from s in context.Sites
              where s.Name.Contains(word)
              select s);
}

Возможно ли этовыполнить?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Если ваши сайты имеют свойство навигации по категориям, вы можете попробовать это:

var filteredcategories = FilterSites(siteWord).SelectMany(s => s.Categories);
0 голосов
/ 28 марта 2011

Если я правильно понимаю ваше требование, вы можете выполнить то, что вы хотите, просто выбрав из объекта IQueryable, возвращаемого с FilterSites, например:

var filteredcategories = from c in FilterSites(siteWord) select c; 

Я никогда не использую синтаксис запроса linq ... Я предполагаю,это даст вам то, что вы хотите ... синтаксис метода будет выглядеть так:

var filteredcategories = FilterSites(siteWord).Where(s => s.Something = "something");
...