1

我正在寻找一种方法来对 linq 中的子集合进行 IN 子句查询。

我有一个例子如下:

Entity: Product.CategoryAssignments - this is an IList<Category> that the product is assigned to. Product can be assigned to multiple categories.

我想检索类别列表中匹配的所有产品,即

IList<Category> selectedCategories = GetUsersSelectedCategories();

// 如何做类似的事情

IList<Products> products = from p in repository where p.CategoryAssignments.Contains(?) select p;

任何提示赞赏?

4

1 回答 1

6

除非我误解了这个问题,否则我认为答案实际上并不是关于如何在 Linq 中执行“in”语句,因为您实际上是在比较两个列表的结果。

我不是这方面的专家,因为我不是每天都使用 Linq(我是 NH Criteria 人员),但是您真正想要的是联合或动态构造的一组 OR 语句?

“给我所有类别是这个或这个或这个的产品”



“给我所有类别的产品”
union
“给我所有类别的产品”
union
“给我所有的产品类别是这个”

因为我对 Linq 不是那么熟悉,所以我不会尝试为此构建声明,但我敢打赌这是互联网上一个有据可查的问题?:)

[编辑]去查了一下——这样的东西有用吗?

var query = 
from p in products
where p.Categories.Any(c=> selectedCategories.Contains(c))
select p;

类别是您要比较的类别列表

于 2010-02-06T12:23:48.067 回答