C# 如何拼接两个LinkedList<;T>;

C# 如何拼接两个LinkedList<;T>;,c#,linked-list,splice,C#,Linked List,Splice,我有一个链接列表的列表: intx=y; 列表=新列表(x); 我希望能够将列表的链接列表的所有元素移动到另一个列表中,而无需创建新列表或节点。这就是我选择LinkedList类型的原因。在C++中,我可以使用.< /p> 最后,列表中只有一个元素不会为空 我的问题是,我无论如何都找不到这样做的方法,我只找到了将两个LinkedList复制成一个或类似的方法 我目前的研究(这不是我想要的): 注:我不关心数据顺序,我只需要性能。如果“我只需要性能”的意思是需要拼接操作为O(1),那么

我有一个
链接列表的
列表

intx=y;
列表=新列表(x);
我希望能够
列表的
链接列表
的所有元素移动到另一个列表中,而无需创建新列表或节点。这就是我选择
LinkedList
类型的原因。在C++中,我可以使用.< /p> 最后,
列表
中只有一个元素不会为空

我的问题是,我无论如何都找不到这样做的方法,我只找到了将两个
LinkedList
复制成一个或类似的方法

我目前的研究(这不是我想要的):

注:我不关心数据顺序,我只需要性能。

如果“我只需要性能”的意思是需要拼接操作为O(1),那么,据我所知,这在.NET中是不可能的

但是,您可以创建自己的类型,该类型的行为类似于
LinkedList
,并且支持这种拼接操作。当然,实现已经存在的功能并不好,但另一方面,链表并没有那么复杂


或者,您可以创建一个包装
列表
(或类似内容)并支持所需操作的类型。例如,
LinkedList
实现了
IEnumerable
ICollection
,而在
List
的包装器上实现这些功能只需要几行相对简单的代码,拼接操作几乎是免费的。

我有点困惑。
列表
类似于C++的
std::vector
List
与这个问题有什么关系?@milleniumbug我为上下文添加了一个列表,也许它没用。但实际上,我希望LinkedList上有一个方法splice,或者一个使用其他容器的解决方案,该容器将实现splice并在该操作上具有O(1)。另外:左侧和右侧是否与示例代码所述的类型不同?那么
列表
链接列表
呢?更不用说,C++的
std::list::splice
也是O(n)(但可能仍然很快),因为rhs列表必须保持
size()
。接受一个
LinkedListNode
,需要另一行从源中删除节点。如果需要将其设置为O(1),则需要一个具有O(n)
.Count的链表类。NET中没有这样的内置类
int x = y;
List<LinkedList<foo>> list = new List<LinkedList<foo>>(x);