6 votes

Ajouter une collection d'objets à une autre collection d'objets sans itération

J'ai une collection d'objets objcol1 (exemple : collection de villes dans un état) et une autre collection d'objets objcol2 (exemple : collection de villes dans un pays). J'interroge maintenant objcol1 et je veux l'ajouter à objcol2. Je peux le faire en itérant à travers objcol1 et en l'ajoutant un par un à objcol2, mais puis-je ajouter directement objcol1 à objcol2 comme suit objcol2.add(objcol1) ;

Quelqu'un peut-il me dire si c'est possible sans itération ? Si oui, expliquez-moi le processus

17voto

M.Babcock Points 10653

Vous pouvez utiliser le Enumerable.Concat méthode d'extension :

objcol1 = objcol1.Concat(objcol2)

Je suis sûr que quelque part, sous la couverture, il itère réellement, mais vous n'aurez pas besoin d'écrire le code pour le faire.

REMARQUE : Cela ne fonctionnera que si votre City sont les mêmes, mais vous pouvez aussi utiliser les objets Select pour cartographier les objets.

12voto

Tx3 Points 2022

Vous pouvez également utiliser AddRange de la liste. Voir aussi la documentation pour plus d'informations.

var a = new List<string> { "1", "2" };
var b = new List<string> { "3", "4" };
a.AddRange(b);

// a would contain "1", "2", "3" and "4"

4voto

Craig Wilson Points 4235

Oui, c'est possible en fonction de votre cas d'utilisation. Si vous ne vous souciez pas du type de "collection", vous pouvez utiliser la commande linq Concat pour créer un nouvel élément énumérable qui, lors de l'itération, inclura les éléments des deux collections.

var collection1 = new List<int> { 1, 2, 3 };
var collection2 = new [] { 4, 5, 6};

var concatenated = collection1.Concat(collection2);

Si, en revanche, vous devez réellement insérer les éléments dans la collection existante, vous devrez procéder par itération.

1voto

Faust Points 7523

En fait, vous n'avez pas besoin d'une nouvelle var :

collection1.AddRange(collection2);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X