Comment puis-je déplacer des éléments d'une liste à une autre liste en C#?
Quelle est la meilleure façon pour le transfert de certains articles (pas tous) à partir d'une liste à l'autre.
Ce que je fais est la suivante:
var selected = from item in items
where item.something > 10
select item;
otherList.AddRange(selected);
items.RemoveAll(item => selected.Contains(item));
Dans l'intérêt de la manière la plus rapide/le meilleur code y est, est-il un meilleur moyen?
- Je regarde à l'aide de la méthode ForEach sur la Liste pour gérer cela. Aussi, vous voudrez probablement pour normaliser l'aide de la syntaxe de requête ou de la méthode de la syntaxe, mais pas les deux.
InformationsquelleAutor Stécy | 2009-06-22
Vous devez vous connecter pour publier un commentaire.
J'essaierais @Mehrdad réponse, et peut-être le tester contre cette trop...
Je suggère:
ForEach
RemoveAll passe par chaque point et énumère toutes les valeurs de votre liste sélectionnée à chaque fois. Cela va prendre plus de temps que prévu...
Ce que je ferais, c'est de mettre l'état directement dans le RemoveAll paramètre:
Si vous faites cela et ne pas changer le reste de votre code, il y aurait la duplication de code, qui n'est pas bon. Je ferais la suite de l'éviter:
var
avec un lambda (même si vous corrigez les brisées de la syntaxe).Qui est très mauvaise performance sage - elle réellement énumère une requête n fois (pour n éléments dans
items
). Il serait mieux si vous construit (par exemple) unHashSet<T>
des éléments à manipuler.Pour donner un exemple simple, avec juste
int
valeurs:Comment sur une partition: