Liste d'échange<> éléments avec c# à l'aide de LINQ
J'ai cette liste
var liste = new List { 3, 1, 0, 5 };
Je veux permuter l'élément 0 à 2
de sortie
0, 1, 3, 5
Double Possible de Swap de deux éléments dans la Liste<T>
OriginalL'auteur | 2009-07-10
Vous devez vous connecter pour publier un commentaire.
Si vous voulez juste un tri, j'aimerais utiliser la Liste.Sort().
Si vous voulez échanger, il n'est pas construit dans la méthode pour ce faire. Il serait facile d'écrire une méthode d'extension:
Vous pourriez alors faire:
Vous ne pouvez pas accéder à un IEnumerable par l'indice, de sorte que votre méthode ne fonctionne pas. Vous pouviez retourner un IEnumerable, mais il serait potentiellement un comportement inattendu, sauf si vous avez créé une copie, car vous seriez de retour de la modification de la collecte. La construction d'une copie d'ajouter les frais généraux.
Vous pouvez accéder à un IEnumerable par l'index de l'aide de Énumérable.ElementAt.
Chung: Mais ce n'est pas "vraiment" à l'aide de IEnumerable - il de streaming par le biais de la énumérable pour obtenir l'élément à un endroit, qui est horriblement inefficace.
vous devriez faire une IList extension, puis il travaille pour ObservableCollection et l'aime ainsi.
OriginalL'auteur Reed Copsey
Classique swap est...
Je ne pense pas que Linq a tout "swap" fonctionnalité, si c'est ce que vous cherchez.
OriginalL'auteur Matthew Groves
Dans le cas que quelque chose n'est pas directement pris en charge ...il est donc numéro 1!
Prendre un coup d'oeil à la notion de "les méthodes d'extension". Avec cela, vous pouvez facilement faire votre liste de soutenir le concept de Swap() (cela s'applique à n'importe quel moment vous souhaitez étendre les fonctionnalités d'une classe).
OriginalL'auteur Andrew Siemer