.NET List Concat vs AddRange

¿Cuál es la diferencia entre las funciones AddRange y Concat en una lista genérica? ¿Se recomienda uno sobre el otro?

Tienen una semántica totalmente diferente.

AddRange modifica la lista al agregarle otros elementos.

Concat devuelve una nueva secuencia que contiene la lista y los otros elementos, sin modificar la lista.

Elija el que tenga la semántica que desee.

La gran diferencia es que AddRange muta esa lista contra la que se llama mientras que Concat crea una nueva lista. Por lo tanto, tienen diferentes usos.

También Concat es un método de extensión que se aplica a cualquier IEnumerable y devuelve un IEnumerable que necesita un .ToList () para dar como resultado una nueva lista.

Si desea ampliar el contenido de una lista existente, utilice AddRange.

Si está creando una nueva lista a partir de dos fonts de IEnumerable, utilice Concat con .ToList. Esto tiene la calidad de que no muta ni de las fonts.

Si solo necesita enumerar los contenidos de dos Listas (o cualquier otro IEnumerable), simplemente use Concat cada vez, esto tiene la ventaja de no asignar memoria nueva para contener la lista unificada.