EF6 - 使用包含列表的包含

时间:2014-05-22 04:29:18

标签: c# linq entity-framework

我有Ingredients的列表。

在我的数据库中,每个Recipe都有一个Ingredients列表(多对多)。

鉴于Ingredients列表,我正在尝试查找其中包含Recipes列表的所有Ingredients

例如:如果我仅传入ingredients = [Bananas, Bread]

Banana Sandwich: Bananas, Bread
Banana PB Sandwich: Bananas, Bread, PB

我想运行db.Recipes.Where(e => ingredients.Contains(e.Ingredients))

之类的查询

在上面的例子中仅返回香蕉三明治。 Contains不接受IEnumerable。如果不将所有食谱加载到内存中,我该怎么做才能实现此查询?

3 个答案:

答案 0 :(得分:2)

使用All()的正确语法是使用

var recipes = db.Recipes
    .Where(r => r.Ingredients.All(i => ingredients.Contains(i.PropertyNameToMatch));

答案 1 :(得分:0)

您可以尝试使用All,但我并非100%确定LINQ to Entities支持此功能。

db.Receipes.Where(e => e.Ingredients.All(ingredients.Contains));

答案 2 :(得分:0)

Contains不接受IEnumerable,但接受IQueryable

尝试将您的食材定义为IQueryable并查看!