此集合包含整个产品数据库:
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(...,...,)
答案 0 :(得分:7)
var filteredProducts = (from p in allProducts
where usersProducts.Contains(p.Id) && p.Type == 1
select p).ToList();
答案 1 :(得分:2)
var filteredProducts = allProducts.Where(p => p.Type == 1 && userProducts.Contains(p.Id)).ToList();
另外,出于性能原因,我交换了条件的顺序。如果p.Type
不等于1,则Contains
将不会执行。
答案 2 :(得分:0)
听起来你只想加入。
var filteredProducts = (from p in allProducts
join u in usersProducts on p.Id equals u.Id
where p.Type == 1
select p).ToList();