.net
linq
list
extension-methods
johnc
la source
la source
La grande différence est que AddRange mute la liste par rapport à laquelle il est appelé tandis que Concat crée une nouvelle liste. Par conséquent, ils ont des utilisations différentes.
Concat est également une méthode d'extension qui s'applique à n'importe quel IEnumerable et renvoie un IEnumerable dont vous avez besoin d'un .ToList () pour générer une nouvelle List.
Si vous souhaitez étendre le contenu d'une liste existante, utilisez AddRange.
Si vous créez une nouvelle liste à partir de deux sources IEnumerable, utilisez Concat avec .ToList. Cela a la qualité de ne muter aucune des sources.
Si vous avez seulement besoin d'énumérer le contenu de deux listes (ou de tout autre IEnumerable), utilisez simplement Concat à chaque fois, cela a l'avantage de ne pas allouer de nouvelle mémoire pour contenir la liste unifiée.
la source
J'ai trouvé cet article intéressant parlant de la différence entre ces 2 structures et comparant leurs performances ...
L'idée principale est qu'AddRange est beaucoup plus rapide lorsqu'il s'agit de collections de grande taille.
Voici le lien
J'espère que cela t'aides,
la source
Concat
etAddRange
avec unList<KeyValuePair<string, string>>
avec 1000 éléments, concaténés / ajoutés 100 fois, etAddRange
c'était extrêmement plus rapide. Les résultats ont été les suivants:AddRange
13 ms,Concat().ToList()
16 000 ms, etConcat
sur uneIEnumerable
seule actionToList
à la fin: 2 700 ms.