LINQ to Entities查询相关实体

时间:2013-03-14 08:09:43

标签: linq entity-framework

我有3个EF对象集:父母,孩子和宠物,有1对多关联(父母可以有儿童和儿童可以有许多宠物)。 对于给定的父母,我需要获得该父母所有孩子所拥有的所有宠物。

我担心这个查询是否正确还是可以提高效率:

Dim query = From par In context.Parents
            From child In par.Childrens
            From pet In child.Pets
            Where par.parent_id = 1
            Select pet

1 个答案:

答案 0 :(得分:0)

这个查询是正确的,虽然它是cross-join - 只是两个集合中的Cartesian product - 。

您可以根据join条件明确指定equality

var query = from par  in context.Parents
            join child  in context.Childrens on child.ParentID equals par.ID
            join pet  in context.Products on child.ID equals pet.ChildID
            Where par.parent_id = 1
            select new { par.Name, par.Id };