gpt4 book ai didi

c# - 使用 LINQ 展平分层数据集 - 有一个警告

转载 作者:行者123 更新时间:2023-11-30 19:48:06 25 4
gpt4 key购买 nike

我有以下数据集需要展平成一个列表:

<row itemID="828518871" locationID="60004165" typeID="9331" quantity="6" flag="4" singleton="0"/>
<row itemID="830476364" locationID="60004165" typeID="649" quantity="1" flag="4" singleton="1">
<rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
<row itemID="1139985051" typeID="6485" quantity="1" flag="22" singleton="1"/>
<row itemID="1773489170" typeID="11489" quantity="1" flag="5" singleton="1">
<rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
<row itemID="1001694072954" typeID="16357" quantity="1" flag="0" singleton="0"/>
<row itemID="1001694110421" typeID="16371" quantity="1" flag="0" singleton="0"/>
...
</rowset>
</row>
</rowset>
</row>

(... 表示额外的行和/或嵌套级别;这些级别理论上可以无限嵌套。)

输出需要如下所示:

Item { ID = 828518871, Location = 60004165, Type = 9331, Quantity = 6, Flag = 4, Singleton = false }
Item { ID = 830476364, Location = 60004165, Type = 649, Quantity = 1, Flag = 4, Singleton = true }
Item { ID = 1139985051, Location = 60004165, Type = 6485, Quantity = 1, Flag = 22, Singleton = true }
Item { ID = 1773489170, Location = 60004165, Type = 11489, Quantity = 1, Flag = 5, Singleton = true }
Item { ID = 1001694072954, Location = 60004165, Type = 16357, Quantity = 1, Flag = 0, Singleton = false }
Item { ID = 1001694110421, Location = 60004165, Type = 16371, Quantity = 1, Flag = 0, Singleton = false }
...

要注意的是,输出中的所有 行都需要正确设置它们的LocationID - 子行必须从其父行或父行的父行等处获取此属性.

我已经编写了一个可以正确生成所需输出的递归方法,但我希望只使用 LINQ 获得相同的结果 - 这可能吗?

最佳答案

LINQ 通常不适用于任意递归。使用 SelectMany 展平 一个 层嵌套很好,但递归解决方案最终仍需要显式调用自身。例如,您可以编写一个使用 LINQ 并在查询中调用自身的方法,但您不能轻易地让 LINQ 隐式执行递归。

因此,您可以调整现有的递归方法以使用 LINQ,但不太可能最终得到与解决方案完全不同的结构。

关于c# - 使用 LINQ 展平分层数据集 - 有一个警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com