2011-09-22 56 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(); 
相关问题