![]() |
1
6
不知道如何编写递归LINQ。但我认为这里不需要递归。一棵树只需两步就可以建成:
根变量现在包含完整的树。 以下是要测试的完整示例:
|
![]() |
2
2
我知道我来这里有点晚了。但您说过您已经有了一个使用foreach:)的版本,所以如果它实际上应该是递归的并使用linq,这将是一个解决方案:
|
![]() |
3
1
您可以得到一个类似树的结构,将LINQ和递归与委托结合在一起。在这个示例中,我使用这样的XML结构:
因此,要在代码中存储节点数据并方便导航,请创建如下类:
现在,使用linq-to-xml将XML文件加载到一个xdocument中。在此之后,声明一个委托,该委托迭代文档中的所有XML元素,选择具有与委托的ID参数匹配的ID的节点。选择每个节点时,它再次调用委托,传递要查找的父节点的ID。它首先将id参数设置为空,因此,选择firts根节点:
要测试它,您可以执行一个简单的循环方法,将树打印到控制台:
希望有帮助! |
![]() |
4
0
我用LINQ做了一些非常相似的事情
我不使用Linq的查询语法,如果这是错误的,请原谅我:
当然,如果您的类看起来像:
然后,您可以按整个竞争对手分组,而不是仅按ID分组,这使得生成XML变得更快、更容易。
|
![]() |
5
0
然后您只需调用getchildren,将根的ID作为parentID传递,这将返回一个树结构。您也可以更改
我知道这不是你要找的,但是Afaik Linq不支持递归。然而,linq的lin部分意味着语言集成,这正是我使用的。 |
![]() |
6
0
虽然不能使用单个查询来完成此操作(除非您使用CTE直接调用SQL),但可以将查询数限制在树的深度。 代码太长,无法粘贴,但基本步骤如下:
您可以最小化在步骤2中传递给查询的节点数量。SQL Server倾向于使用超过2000个条目的列表进行轰炸。(不过,SQL Compact没有这样的问题)。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |