LINQ很多地狱 - 查询CONTAINS ALL

Aar*_*ron 4 many-to-many contains linq-to-sql

我有多对多的关系如下:

产品产品 ID描述

ProductFeatures ProductFeatureID ProductID FeatureID

功能特征 ID描述

任何产品都可以有许多功能.

然后我带来了一个名为"SearchFeatures"的iQueryable,它包含了我想要搜索的两个特定的Feature对象.

我想找到具有所有这些功能的产品!

像这样的东西会很好:

return db.Products.Where(x => x.Features.ContainsAll(SearchFeatures));
Run Code Online (Sandbox Code Playgroud)

使用LINQ实现此目的的最简洁方法是什么?

非常感谢.

Fra*_*sco 5

IQueryable<Products> products = db.Products;
foreach (var feature in SearchFeatures)
{
    Feature tmpFeature = feature;
    products = products
        .Where(x=>x.ProductFeatures.Any(y=>y.FeatureID == tmpFeature.FeatureID));
}
Run Code Online (Sandbox Code Playgroud)