我正在构建一个列表,其中我添加的每个元素都告诉我下一个应该添加哪个元素。使用LINQ是否有更快的方法来做到这一点?
List<Element> result = new List<Element>() {firstElement};
while (result.Last().nextElement != null) {
result.Add(result.Last().nextElement))
}
您似乎想要构建链表,如果这是你想要的,我建议使用泛型链表类。
LinkedList类有所有方法来处理,添加/删除,清除,搜索和…你可能会需要的。此外,它有更好的性能和内存管理。
你可以在MSDN上找到更多的帮助和例子
您应该避免调用result.Last()
。我们不知道它是如何实施的。在最坏的情况下,它会在每次调用时创建一个枚举器,并循环遍历整个列表。每个循环两次!这将产生大量的对象创建和垃圾收集。
持有current
项目并将其添加到列表中要容易得多。
List<Element> result = new();
var current = firstElement;
while(current != null) {
result.Add(current);
current = current.NextElement;
}