2011-09-22 25 views
3

此集合包含了產品的整個數據庫:LINQ表達式來獲得在IList中的所有項目,其中一個領域是另一個列表

IList<Products> allProducts; 

這包含所有產品該用戶剛剛的GUID:

IList<Guid> usersProducts; 

下面是我所需要的僞代碼,即在IList中的所有產品類別中給定用戶,且產品類型==也1.

var filteredProducts = (p from allProducts 
         where p.Id in usersProducts && p.Type == 1).List(); 

我無法弄清楚如何做SQL查詢「WHERE IN(...,...)

回答

7
var filteredProducts = (from p in allProducts 
          where usersProducts.Contains(p.Id) && p.Type == 1 
          select p).ToList(); 
+0

包含對我來說似乎沒有解決,它是B/C它是一個IList?實際上等待,我試圖包含在一個特定的列p.Id.Contains – codecompleting

+1

認爲它是缺少一個選擇在最後也。 – codecompleting

+0

我已更正所有建議的查詢。謝謝大家。 – Samich

2

@ Samich的答案是正確的。這只是一個個人喜好,但我更喜歡的方法來調用...

var filteredProducts = allProducts.Where(p => p.Type == 1 && userProducts.Contains(p.Id)).ToList();

此外,對於性能方面的原因,我換你的條件語句的順序。如果p.Type不等於1,則Contains將不會執行。

0

聽起來像你只是想加入。

var filteredProducts = (from p in allProducts 
         join u in usersProducts on p.Id equals u.Id 
         where p.Type == 1 
         select p).ToList(); 
相關問題