Каждый узел в реализации Framework LinkedList имеет ссылку на список, содержащий его, что делает перенос элементов в другой список O(n) instead of O(1), что наносит ущерб цели реализации связанного списка. Если вы хотите перенести элементы в другой список в этой реализации, вам придется удалить и добавить их один за другим (используя Remove и AddAfter в списке), чтобы каждый из них получил ссылку на другой список.
Я подозреваю, что это не то, что вам нужно. Как утверждают другие комментарии, потребности вашего списка, вероятно, достаточно просты, что вам будет лучше сделать свой собственный гораздо более простой связанный список. И этот вопрос уже рассмотрен в другом месте на SO (Creating a very simple linked list).
Поскольку этот ответ не включает легкое перечисление и инициализацию, я сделал свой собственный.
class ListNode<T> : IEnumerable<T>
{
public T data;
public ListNode<T> Next;
private ListNode() { }
public ListNode(IEnumerable<T> init)
{
ListNode<T> current = null;
foreach(T elem in init)
{
if (current == null) current = this; else current = current.Next = new ListNode<T>();
current.data = elem;
}
}
class ListEnum : IEnumerator<T>
{
private ListNode<T> first;
private ListNode<T> current;
bool more;
public ListEnum(ListNode<T> first) { this.first = first; more = true; }
public T Current { get { return current.data; } }
public void Dispose(){}
object System.Collections.IEnumerator.Current { get { return current.data; } }
public void Reset() { current = null; more = true; }
public bool MoveNext()
{
if (!more)
return false;
else if (current == null)
return more = ((current = first) != null);
else
return more = ((current = current.Next) != null);
}
}
public IEnumerator<T> GetEnumerator()
{
return new ListEnum(this);
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
static void Main(string[] args)
{
ListNode<int> l1 = new ListNode<int>(new int[] {3,1,4,1,5,9});
ListNode<int> l2 = new ListNode<int>(new int[] { 5 });
l2.Next = l1.Next;
foreach (int i in l2)
Console.WriteLine(i);
}
Показать примерный пример вашей проблемы как кода. – mybirthname
Вам необходимо использовать методы класса LinkedList. – juharr
Вы не можете. Вам нужно либо добавить второй список в первый, либо создать класс, содержащий свойства, которые будут указывать на другие списки. Класс может наследовать объект LinkList, чтобы вы могли перечислить основной список. – jdweng