Ne peut pas ajouter une liste à l'autre en C#... en essayant d'utiliser AddRange
Salut, je suis en train d'ajouter 1 liste à l'autre. Je l'ai fait à l'aide de AddRange()
avant, mais il ne semble pas être le fait de travailler ici... Voici le code:
IList<E> resultCollection = ((IRepository<E, C>)this).SelectAll(columnName, maxId - startId + 1, startId);
IList<E> resultCollection2 = ((IRepository<E, C>)this).SelectAll(columnName, endId - minId + 1, minId);
resultCollection.ToList().AddRange(resultCollection2);
Je n'ai débogage pour vérifier les résultats, voici ce que j'ai: resultCollection
a un nombre de 4 resultCollection2
a un nombre de 6, et après l'ajout de la gamme, resultCollection
ne joue encore qu'un nombre de 4, alors qu'il devrait avoir un nombre de 10.
N'importe qui peut voir ce que je fais mal? Toute aide est appréciée.
Merci,
Matt
OriginalL'auteur Matt | 2009-11-12
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez
ToList()
vous n'êtes pas à l'emballage de la collection dans unList<T>
vous êtes en train de créer un nouveauList<T>
avec les mêmes éléments. Donc, ce que vous êtes effectivement en train de faire ici est de créer une nouvelle liste, en ajoutant les éléments, puis de le jeter à la liste loin.Vous auriez besoin de faire quelque chose comme:
Alternativement, si vous êtes à l'aide de C# 3.0, il suffit d'utiliser
Concat
, par exempleOriginalL'auteur Greg Beech
Je suppose .ToList() est la création d'une nouvelle collection. Par conséquent, vos articles sont ajoutés à une nouvelle collection qui est immédiatement jeté et l'original reste intact.
La même erreur que j'ai faite! AddRange renvoie void.
Utiliser la solution proposée par Greg Hêtre. Aussi, si l'acceptation aller pour lui plutôt que moi, j'ai seulement souligné le problème, il est fait que de plus fourni une solution! 🙂
OriginalL'auteur Quibblesome
resultCollection.ToList()
sera de retour une nouvelle liste.Essayer:
AddRange
renvoie void.Bien repéré... fixe.
OriginalL'auteur Philip Wallace
Essayer
IList newList = resultCollection.ToList().AddRange(resultCollection2);
OriginalL'auteur Justin Niessner
Vous pouvez utiliser l'une des opérations suivantes:
Ou:
Ou:
OriginalL'auteur Sam Harwell