Порядок LinkedListNode
в пределах LinkedList
не может быть изменен, поскольку LinkedListNode
допускает только получение свойств Previous
и Next
.Таким образом, чтобы изменить порядок в пределах LinkedList
, вы можете поменять местами только значения (которые позволяют набор).
Чтобы заставить это работать, я бы использовал некоторые методы расширения, подобные этим, чтобы немного поменять местамиболее общий:
public static class LinkedListExtensions
{
public static LinkedList<T> SwapPairwise<T>(this LinkedList<T> source)
{
if (source == null)
throw new ArgumentNullException("source");
var current = source.First;
if (current == null)
return source;
while (current.Next != null)
{
current.SwapWith(current.Next);
current = current.Next;
if (current != null)
current = current.Next;
}
return source;
}
public static void SwapWith<T>(this LinkedListNode<T> first, LinkedListNode<T> second)
{
if (first == null)
throw new ArgumentNullException("first");
if (second == null)
throw new ArgumentNullException("second");
var tmp = first.Value;
first.Value = second.Value;
second.Value = tmp;
}
}