linq搜索子集合中的匹配项

时间:2010-02-06 11:03:36

标签: linq linq-to-objects linq-to-nhibernate

我正在寻找一种在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;

任何提示赞赏?

1 个答案:

答案 0 :(得分:6)

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

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

“给我所有类别为此或此或此类别的产品”
要么

“给我这个类别的所有产品”
工会
“给我这个类别的所有产品”
工会
“给我这个类别的所有产品”

因为我并不是所有对Linq的自负,我不打算为此构建声明,但是我愿意打赌这是互联网上有详细记录的问题吗? :)

[编辑] 去看了 - 看起来像这样吗?

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

类别是您要与

进行比较的类别列表