Lista .NET Concat vs AddRange
-
01-07-2019 - |
Solução
Eles têm totalmente diferentes semântica.
AddRange modifica a lista adicionando os outros itens a ele.
Concat retorna uma nova sequência que contém a lista e os outros itens, sem modificar a lista.
Escolha uma questão que tem a semântica que você deseja.
Outras dicas
A grande diferença é que sofre mutações AddRange essa lista contra o qual ele é 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 lista.
Se você deseja estender o conteúdo de um AddRange lista utilização existente.
Se você estiver criando uma nova lista de duas fontes IEnumerable então usar Concat com .ToList. Isto tem a qualidade que ele não sofra mutação de qualquer uma das fontes.
Se você só precisa enumerar o conteúdo de duas listas (ou qualquer outro IEnumerable) então simplesmente use Concat cada vez, isto tem a vantagem de não realmente alocar nova memória para armazenar a lista unificada.
Eu encontrei este artigo interessante falar sobre a diferença entre estes 2 estruturas e comparar o seu desempenho ...
A idéia principal é que AddRange é maneira muito mais rápida quando seu sobre coleções de grande porte.
Aqui está a Fazer a ligação
Espero que isso ajude,