我有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。如果不将所有食谱加载到内存中,我该怎么做才能实现此查询?
答案 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
并查看!