.net
linq
list
extension-methods
johnc
fonte
fonte
A grande diferença é que AddRange modifica aquela lista contra a qual é chamado, enquanto Concat cria uma nova lista. Portanto, eles têm usos diferentes.
Além disso, Concat é um método de extensão que se aplica a qualquer IEnumerable e retorna um IEnumerable. Você precisa de um .ToList () para resultar em uma nova List.
Se você quiser estender o conteúdo de uma lista existente, use AddRange.
Se você estiver criando uma nova lista de duas fontes IEnumerable, use Concat com .ToList. Isso tem a qualidade de não alterar nenhuma das fontes.
Se você precisar apenas enumerar o conteúdo de duas Listas (ou qualquer outro IEnumerable), basta usar Concat todas as vezes, isso tem a vantagem de não alocar de fato nova memória para manter a lista unificada.
fonte
Achei este artigo interessante falando sobre a diferença entre essas 2 estruturas e comparando seu desempenho ...
A ideia principal é que AddRange é muito mais rápido quando se trata de coleções de tamanho grande.
Aqui está o link
Espero que isto ajude,
fonte
Concat
eAddRange
com umList<KeyValuePair<string, string>>
com 1000 elementos, concatenado / adicionado 100 vezes, eAddRange
foi extremamente mais rápido. Os resultados foram os seguintes:AddRange
13 ms,Concat().ToList()
16.000 ms, eConcat
aoIEnumerable
fazer apenas oToList
no final: 2.700 ms.