Linq集团加入

时间:2016-03-26 23:21:45

标签: c# linq

如何在Description的{​​{1}}中撰写Recipe。 我试图使用recipe=,但它给出了错误的结果。它会删除result1中的一个项目。

Exptected output:

enter image description here

join r in Recipe on d.DishID equals r.DishID

1 个答案:

答案 0 :(得分:2)

您想要进行左连接

要做到这一点,你需要在linq中做一些额外的事情,不知道为什么它本身不支持但是它不是。

        var result1 = (
        from d in Dish
        join c in Component on d.DishID equals c.DishID into items
        join r in Recipe on d.DishID equals r.DishID into recipes
        select new Item { 

                     DishID = d.DishID, 

                     components = items.DefaultIfEmpty()
                                       .Where(a=>a!=null)
                                       .ToArray(), 

                     recipe = recipes.DefaultIfEmpty()
                                    .Where(a=>a!=null)
                                    .Select(a=>a.Description)
                                    .FirstOrDefault() 
        }).ToList();