2011-03-28 44 views
0

我有一個多對多的關係(網站,類別,CategoriesXSite),我需要獲得所有類別過濾某些網站名稱,所以我做了我的功課,並做了這個linq :使用預先存在的iqueryable過濾另一個實體框架上的iQueryable

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); 
} 

這可能實現嗎?

在此先感謝!

回答

1

如果你的網站有導航屬性類別,你可以試試這個:

var filteredcategories = FilterSites(siteWord).SelectMany(s => s.Categories); 
+0

嘿!,非常感謝,這就是訣竅! – Milox 2011-03-29 00:16:29

0

如果我正確理解你的要求,你可以完成你想要從你的IQueryable對象只是選擇從什麼FilterSites返回,如:

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

我從來沒有使用LINQ查詢語法...我認爲會得到你想要的東西......方法的語法看起來像:

var filteredcategories = FilterSites(siteWord).Where(s => s.Something = "something"); 
相關問題