C# 管理可包含其他对象的对象列表的最简单方法
对不起,这个标题。我想不出比这更好的了 不管怎样,这就是我遇到的问题。 假设我有一张这样的清单C# 管理可包含其他对象的对象列表的最简单方法,c#,list,C#,List,对不起,这个标题。我想不出比这更好的了 不管怎样,这就是我遇到的问题。 假设我有一张这样的清单 [a, b, c, d, e, f, g, h] 现在,根据一些规则,我想把元素从c分组到f,这样列表看起来像 [a, b, [c, d, e, f], g, h] 原始列表的大小已减少到5个元素(内部列表的类型与单数值相同) 现在我可以把它分组得越来越远 [a, [b, [c, d, e, f]], [g, h]] 我遇到的问题是它的实际实现。 在我编写自定义链表(尽管C#提供了一个链表)之前
[a, b, c, d, e, f, g, h]
现在,根据一些规则,我想把元素从c分组到f,这样列表看起来像
[a, b, [c, d, e, f], g, h]
原始列表的大小已减少到5个元素(内部列表的类型与单数值相同)
现在我可以把它分组得越来越远
[a, [b, [c, d, e, f]], [g, h]]
我遇到的问题是它的实际实现。
在我编写自定义链表(尽管C#提供了一个链表)之前,我必须这样做,它允许我修改元素的左链接和右链接,所以我只需要将元素从C移到f,将它们固定在一个新对象中,并让b指向右边,让g指向左边
然而,这似乎是一个巨大的过度使用,有些东西告诉我,对于这类事情,.NET中必须有一些更简单的内置解决方案。为什么需要将元素分组为子组?您可以查询列表以获取组吗?您几乎肯定希望在
IEnumerable
之上构建代码,而不是LinkedList
(无论是自定义还是库)。您想如何定义应该将哪些元素组成子集?你会给出一个开始和结束索引,一个开始索引和计数,一个函数,它接受一个项目并返回一个布尔值,指示它是否应该包括在前一个组中,什么?这实际上是标记器的一部分。元素可以是数字、运算符和括号。我想把括号分组。理想情况下,我会通过提供两个索引对它们进行分组。听起来像是一棵树而不是一个列表。我想你是对的。