.net
linq
list
extension-methods
johnc
fuente
fuente
La gran diferencia es que AddRange muta la lista contra la que se llama, mientras que Concat crea una nueva lista. De ahí que tengan diferentes usos.
Además, Concat es un método de extensión que se aplica a cualquier IEnumerable y devuelve un IEnumerable, necesita un .ToList () para generar una nueva Lista.
Si desea ampliar el contenido de una lista existente, utilice AddRange.
Si está creando una nueva lista a partir de dos fuentes IEnumerable, utilice Concat con .ToList. Esto tiene la cualidad de que no muta ninguna de las fuentes.
Si solo necesita enumerar el contenido de dos Listas (o cualquier otro IEnumerable), simplemente use Concat cada vez, esto tiene la ventaja de no asignar nueva memoria para contener la lista unificada.
fuente
Encontré este interesante artículo hablando de la diferencia entre estas 2 estructuras y comparando su rendimiento ...
La idea principal es que AddRange es mucho más rápido cuando se trata de colecciones de gran tamaño.
Aquí está el enlace
Espero que esto ayude,
fuente
Concat
yAddRange
conList<KeyValuePair<string, string>>
1000 elementos, concatené / agregué 100 veces yAddRange
fue extremadamente más rápido. Los resultados fueron estos:AddRange
13 ms,Concat().ToList()
16,000 ms, yConcat
alIEnumerable
hacer solo elToList
al final: 2,700 ms.