c# - LINQ - 在父子层次结构中全选

标签 c# vb.net linq linq-to-entities linq-to-objects

我想知道是否有一种巧妙的方法可以做到这一点,即不使用任何类型的 while 循环或类似循环,最好是将 Linq to Entities 作为单个 SQL 往返运行,同时也针对 Linq To对象。

我有一个实体 - Forum - 存在父子关系。也就是说,一个 Forum 可能(或者在顶层的情况下,可能没有)有一个 ParentForum,并且可能有许多 ChildForums论坛 然后包含许多帖子

我想要的是一种从 Forums 树中获取所有 Posts 的方法 - 即有问题的 Forum,以及所有的 child 、孙子等。我事先不知道有问题的论坛可能有多少个子级别。

(注意 - 我知道这个例子不一定是一个有值(value)的用例,但论坛对象模型是大多数人熟悉的一个,因此作为一个通用的和可访问的前提而不是我的实际领域模型。 )

最佳答案

一种可能的方法是,如果您的实际数据表是使用左/右树存储的(这里的示例:http://www.sitepoint.com/hierarchical-data-database-2/。请注意,该示例是在 MySQL/PHP 中,但实现起来很简单)。使用此功能,您可以找出所有属于 parent 的左/右值范围内的论坛,并且鉴于此,您可以检索论坛 ID 为 IN 这些论坛 ID 的所有帖子。

关于c# - LINQ - 在父子层次结构中全选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664319/

相关文章:

c# - 如果我声明一个内部类,内部成员的默认访问级别是什么?

c# - LINQ 查询性能问题

c# - 将 NLog 与 MSTest (.NET Core 2.0) 结合使用

asp.net - 从类型 'Guid' 到类型 'String' 的转换无效

vb.net - 如何在 VB.NET 中将整数作为无符号参数传递?

vb.net - 意外删除 System.Core 引用

c# - 如何在 C# 中旋转列表

c# - .NET LINQ to Entities 泛型类型的基础 where 子句

c# - 在代码中使用大量硬编码字符串

c# - 如何使用 linq 选择锯齿状数组的列