所以前提是我有一个叫食谱的表,每个食谱都有成分。我想建立一个购物清单。
目前我正在做的是: -
List<ingredient> UsedIngredients = new List<ingredient>();
foreach (var item in this.Recipes)
{
foreach (var ingredient in item.ingredients)
{
if (!UsedIngredients .Contains(ingredient))
{
UsedIngredients .Add(ingredient);
}
}
}
我知道我可以将其简化为
List<ingredient> UsedIngredients = new List<ingredient>();
foreach (var item in this.Recipes)
{
foreach (var ingredient in item.ingredients.Where(ingredient => !UsedIngredients .Contains(ingredient)))
{
UsedIngredients.Add(ingredient);
}
}
很简单,但我认为在linq中必须有一个简短的方法来做到这一点,即获得用于所有选定食谱的所有成分的列表。
另请注意
Recipes
是recipe
类型的列表
类型recipe
具有属性成分,它是使用中间多对多连接表连接到成分表(由EF计算为.ingedients
)
答案 0 :(得分:3)
因此,您正试图从食谱中获取一系列独特成分。
var usedIngredients =
(from recipe in this.Recipes
from ingredient in recipe.ingredients
select ingredient).Distinct().ToList();
答案 1 :(得分:0)
public void Test()
{
List<Recipes> recipes = new List<Recipes>();
List<Ingredient> UsedIngredients = new List<Ingredient>();
UsedIngredients = (from a in recipes where UsedIngredients.Contains(a.ingredient) select a.ingredient).ToList();
}
请试试这个