LINQ Liste<> Déplacer les Éléments vers le haut et vers le bas

Serait-il possible de me dire la meilleure façon de se déplacer des éléments dans une List<> en haut et en bas.

Par exemple, j'ai une classe appelée la construction et la Construction a une liste de Chambres d'objets List<Room>. Les chambres sont ajoutés à l'édifice par son nom, mais je suis à l'aide de cette structure, afin de générer une arborescence. L'utilisateur a la possibilité de déplacer une chambre en haut et en bas à l'intérieur d'un bâtiment.

J'ai essayé d'utiliser .Reverse(index, count) mais cela ne semble pas faire quoi que ce soit:

//can this item actually be moved up (is it at the first position in it's current parent?)
if (moveDirection == MoveDirection.UP)
{
    int roomIndex = parentBuilding.Rooms.IndexOf(room);

    if (roomIndex == 0)
    {
        return;
    }
    else
    {
        //move this room up.                            
        parentBuilding.Rooms.Reverse(roomIndex, 1);
    }
}
L'inverse de la fonction renvoie un IEnumerable qui est dans le sens inverse de la liste, la fonction est utilisée. De sorte que la liste elle-même ne sera pas changé. Vous pouvez utiliser de l'indice de base de remplacement. Si vous avez deux éléments dans une liste et vous souhaitez déplacer le deuxième élément, vous stockez le premier élément dans une variable temporaire et de désigner le deuxième élément pour le premier élément, puis attribuer le deuxième élément de la variable temp.
WinForms ou WPF? Et comment allez-vous générer l' TreeView?
En utilisant MVC 3 avec une lame de Rasoir et je suis en train de construire l'arborescence moi-même et à l'aide de jQuery pour développer et réduire les éléments UL
Qu'entendez-vous par "meilleure" façon? La manière la plus rapide, la plus correcte, la plus rapide à mettre en œuvre?

OriginalL'auteur Andrew Rayner | 2013-02-28