linq搜索子集合中的匹配项

Sam*_*l G 1 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.
Run Code Online (Sandbox Code Playgroud)

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

IList<Category> selectedCategories = GetUsersSelectedCategories();
Run Code Online (Sandbox Code Playgroud)

//怎么做的事情

IList<Products> products = from p in repository where p.CategoryAssignments.Contains(?) select p;
Run Code Online (Sandbox Code Playgroud)

任何提示赞赏?

Rob*_*ton 6

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

我不是这方面的专家,因为我没有在日常工作中(我的NH标准的人)使用Linq,但你真的想要的这里可以是一个工会或动态构建组OR语句?

"给我所有的产品类别是这样或这样或这其中"

或者

"给我所有的产品,该类别是这样的"
联盟
"给我所有的产品,该类别是这样的"
联盟
"给我所有的产品在那里这个类别是"

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

[编辑]去看了一下 - 做这样的工作吗?

var query = 
from p in products
where p.Categories.Any(c=> selectedCategories.Contains(c))
select p;
Run Code Online (Sandbox Code Playgroud)

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