代码之家  ›  专栏  ›  技术社区  ›  Samuel Goldenbaum

Linq搜索子集合中的匹配项

  •  1
  • Samuel Goldenbaum  · 技术社区  · 16 年前

    我正在寻找一种在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 回复  |  直到 16 年前
        1
  •  6
  •   metdos    16 年前

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

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

    “给我所有类别是“this”、“this”或“this”的产品”

    或

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

    因为我对Linq不太满意,所以我不打算为此构建声明,但我愿意打赌这在互联网上是一个很好记录的问题?:)

    [编辑] 去查了一下-这样行吗?

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

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