嵌套联接查询的Linq语法

约翰·米切尔

所以前提是我有一张叫做食谱的表格,每个食谱都有成分。我想建立一个购物清单。

目前我正在做的是:-

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连接到成分表的联接

杰夫·梅卡多(Jeff Mercado)

因此,您正在尝试从食谱中收集独特的成分。

var usedIngredients =
    (from recipe in this.Recipes
    from ingredient in recipe.ingredients
    select ingredient).Distinct().ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章