因此,这个问题很可笑,所以我们来看代码。什么是linq2entities相当于以下SQL的,因为实体的样子(表):Linq2Entities针对父母/子女关系的等效查询,与所有父母和子女,筛选/订购子女
Parent
---
parent_id
parent_field1
Child
--
child_id
parent_id
child_field1
child_field2
的SQL:
select p.*, c.*
from parent p
inner join p on
p.parent_id = child.parent_id
where
c.child_field1 = some_appropriate_value
order by
p.parent_field1
c.child_field2
L2E让我们这样做条.include()和这似乎是适当的地方坚持孩子的排序和筛选,但include方法不接受一个表达式(为什么不呢?)。所以,我猜这是不能立即完成的,因为这是很多文章的说法,但它们很老,我想知道EF6是否可能。
此外,我没有访问上下文,所以我需要lambda语法版本。
我要寻找一个结果对象的层次结构,看起来像:
Parent1
|
+-- ChildrenOfParent1
|
Parent2
|
+-- ChildrenOfParent2
等等。该列表最终将成为IEnumerable。如果迭代了该列表,他们可以获取该列表中每个父代的.Children属性。
理想(我是在做梦这里,我想),就是整体大小结果列表的可能是有限的。例如,如果有三个父母,每个有10个孩子,总共有33个(30个孩子+ 3个父母)实体,我可以将总列表限制为某个任意值,例如13,在这种情况下,这会限制结果集与第一个父母及其所有孩子,第二个父母仅与其子女中的一个(共13个实体)。我猜所有这些都必须在代码中手动完成,这是令人失望的,因为它可以在SQL中轻松完成。
如果我正确地读这篇文章,这将创造两个对象,父和子,并且该列表将只包含两个项目。这不是我想要的。我希望所有的父母对象,与他们的子女财产与与父母关联的孩子保持水分。 –
这相当于你的'sql',并生成一个扁平列表,如果你想要分层结构,需要'groupby',检查我的新帖子 –