所以前提是我有一张叫做食谱的表格,每个食谱都有成分。我想建立一个购物清单。
目前我正在做的是:-
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
)连接到成分表的联接
因此,您正在尝试从食谱中收集独特的成分。
var usedIngredients =
(from recipe in this.Recipes
from ingredient in recipe.ingredients
select ingredient).Distinct().ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句