8
votes

Liste d'échange <> Éléments avec C # à l'aide de LINQ

J'ai cette liste

var list = nouvelle liste {3, 1, 0, 5, 5};

Je veux échanger l'élément 0 avec 2

sortie 0, 1, 3, 5


1 commentaires

3 Réponses :


2
votes

Swap classique est ...

int temp = list[0];
list[0] = list[2];
list[2] = temp;


0 commentaires

17
votes

Si vous voulez juste que ce soit trié, j'utiliserais list.sort ().

Si vous souhaitez échanger, il n'y a pas de méthode intégrée pour le faire. Il serait facile d'écrire une méthode d'extension, cependant: xxx

vous pouvez alors faire: xxx


6 commentaires

Tu me bats! Je retournerais toujours un iéenérable.


Vous ne pouvez pas accéder à un index iEnumerable, de sorte que votre méthode ne fonctionnerait pas. Vous pouvez retourner un comportement iéonnant, mais ce serait un comportement potentiellement inattendu, sauf si vous avez construit une copie, car vous retourneriez la collection modifiée. Construire une copie ajouterait des frais généraux.


Vous pouvez accéder à un iNeumable par index en utilisant énumérable.Elementat.


@Joe Chung: Mais ce n'est pas "vraiment" en utilisant ienumer


@Reedcopsey Vous devriez faire une extension iliste, alors cela fonctionne pour l'observablecollection et les goûts aussi.


@stijn True, si vous souhaitez l'exposer à tous les types ilist . Cela peut ou non être souhaité ...



1
votes

Dans le cas où quelque chose n'est pas directement pris en charge ... Faites-le donc le numéro 1!

Regardez le concept de " Méthodes d'extension ". Avec cela, vous pouvez facilement faire en sorte que votre liste prend en charge le concept de swap () (ceci s'applique à tout moment à prolonger la fonctionnalité d'une classe). xxx


0 commentaires