Linq表达式,用于获取illist中的所有项,其中一个字段在另一个List中

本文关键字:一个 字段 List 另一个 获取 用于 表达式 illist Linq | 更新日期: 2023-09-27 18:09:29

此集合包含整个产品数据库:

IList<Products> allProducts;

这只包含该用户的所有产品的指南:

IList<Guid> usersProducts;

下面是我需要的psuedo代码,即给定用户的illist中的所有产品类,并且产品类型也为== 1。

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

我不知道如何做SQL查询"WHERE IN(…,…,)

Linq表达式,用于获取illist中的所有项,其中一个字段在另一个List中

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

@Samich的答案是正确的。这只是个人偏好,但我更喜欢方法语法…

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

另外,出于性能原因,我交换了条件的顺序。如果p.Type不等于1,则Contains不会执行

听起来你只是想要一个连接。

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