我有一个配料I数组,我需要找到包含所有配料在一起的所有食谱,而不是一个或任何一个配料。
我尝试了这样的东西:
var query = (from ri in db.RecipesIngredients
where SelectedIDs.Contains(ri.IngredientId)
select ri.RecipeId).Distinct();它的作用是:获取包含id1、id2或id3等内容的食谱。我希望它是:获取包含id1、id2和id3等的食谱。
这个是可能的吗?
发布于 2013-06-25 05:52:24
你很接近了:
var query = (from r in db.Recipes
where SelectedIDs.All(i => r.Ingredients.Any(ri => ri.IngredientId == i))
select r.RecipeId).Distinct();翻译为
“给我所有的食谱,其中SelectedIDs中的所有成分都在该食谱的配料列表中。”
发布于 2013-06-25 05:52:30
我怀疑你实际上想要所有的食谱,其中不包括任何未选择的成分,在这种情况下,你可以使用:
var query = db.RecipesIngredients
.Except(db.RecipeIngredients
.Where(x => SelectedIDs.Contains(x.IngredientId)))
.Select(ri => ri.RecipeId);我相信这是合乎逻辑的--它是否被翻译成SQL是另一回事。
如果你真的想要一个包含所有选择的成分(但也可能包括其他未选择的成分)的食谱,那么D Stanley的答案可能就是你想要的。
https://stackoverflow.com/questions/17285655
复制相似问题