我有List<bar>
LinkedList<foo>
:
int x = y;
List<LinkedList<foo>> list = new List<LinkedList<foo>>(x);
我希望能够<{>>移动 LinkedList<foo>
list
LinkedList<foo>
的所有元素,而无需创建新的列表或节点。这就是我选择list
类型的原因。在C ++中,我可以使用std::list::splice
。
最后,只有LinkedList<foo>
的一个元素不会为空。
我的问题是我无法找到这样做,我只找到将两个SELECT * FROM
(SELECT *, row_number() OVER (PARTITION BY propertyid ORDER BY validfrom DESC)
AS rownum FROM propertyvalue WHERE validfrom <= '1978-01-01T00:00:00Z') X
WHERE rownum = 1;
复制到一个或类似的方法。
到目前为止我的研究(这不是我想要的):
注意:我不关心数据顺序,我只需要表现。
答案 0 :(得分:2)
如果“我只是需要性能”,你的意思是你需要将拼接操作设置为O(1),那么据我所知,这对于.NET是不可能的。
但是,您可以创建自己的类型,其行为类似于LinkedList<T>
,并支持此类拼接操作。当然,实现已经存在的功能并不好,但另一方面,链表并不复杂。
或者你可以创建一个包装List<LinkedList<T>>
(或类似的东西)并支持你需要的操作的类型。例如。 LinkedList<T>
实现IEnumerable<T>
和ICollection<T>
,并且在List<LinkedList<T>>
的包装上实现这些只是几行相对简单的代码,并且拼接操作几乎是免费的。