J'ai deux instances de IEnumerable<T>
(avec le même T
). Je veux une nouvelle instance IEnumerable<T>
dont la concaténation des deux.
Existe-t-il une méthode intégrée dans .Net pour le faire ou dois-je l'écrire moi-même?
c#
.net
ienumerable
concatenation
Samuel Rossille
la source
la source
Réponses:
Oui, LINQ to Objects prend en charge ceci avec
Enumerable.Concat
:NB: Si
first
ousecond
être nul, vous recevrez unArgumentNullException
. Pour éviter cela et traiter les valeurs nulles comme vous le feriez pour un ensemble vide, utilisez l'opérateur de coalescence null comme ceci:la source
using System.Linq
espace de noms en haut du fichier de code pour voir la méthode d'extension souhaitée dans l'IDE intellisense.La
Concat
méthode retournera un objet qui implémenteIEnumerable<T>
en renvoyant un objet (appelez-le Cat) dont l'énumérateur tentera d'utiliser les deux éléments énumérables transmis (appelez-les A et B) dans l'ordre. Si les énumérations transmises représentent des séquences qui ne changeront pas pendant la durée de vie de Cat et qui peuvent être lues sans effets secondaires, alors Cat peut être utilisé directement. Dans le cas contraire, il peut être une bonne idée d'appelerToList()
surCat
et utiliser le résultatList<T>
(qui représentera un aperçu du contenu de A et B).Certains énumérateurs prennent un instantané au début de l'énumération et renvoient des données à partir de cet instantané si la collection est modifiée pendant l'énumération. Si B est un tel énumérable, alors tout changement à B qui se produit avant que Cat n'ait atteint la fin de A apparaîtra dans l'énumération de Cat, mais les changements qui se produisent après cela ne le seront pas. Une telle sémantique peut être source de confusion; prendre un instantané de Cat peut éviter de tels problèmes.
la source
Vous pouvez utiliser le code ci-dessous pour votre solution: -
la source
la source