Se eu tiver:
List<string> myList1;
List<string> myList2;
myList1 = getMeAList();
// Checked myList1, it contains 4 strings
myList2 = getMeAnotherList();
// Checked myList2, it contains 6 strings
myList1.Concat(myList2);
// Checked mylist1, it contains 4 strings... why?
Eu executei um código semelhante a esse no Visual Studio 2008 e defina pontos de interrupção após cada execução. Depois myList1 = getMeAList();
, myList1
contém quatro strings e pressionei o botão de adição para garantir que não fossem todos nulos.
Depois myList2 = getMeAnotherList();
, myList2
contém seis strings, e eu verifiquei para garantir que elas não fossem nulas ... Depois que myList1.Concat(myList2);
myList1 continha apenas quatro strings. Por que é que?
fonte
IEnumerable<T>
Está funcionando bem, acho que sim. Como dito anteriormente, o Concat retorna uma nova sequência e, ao converter o resultado em Lista, ele executa o trabalho perfeitamente.
fonte
Também vale notar que o Concat trabalha em tempo constante e em memória constante. Por exemplo, o seguinte código
fornece as seguintes métricas de tempo / memória:
fonte
Eu sei que isso é antigo, mas me deparei com este post rapidamente pensando que Concat seria a minha resposta. Union funcionou muito bem para mim. Observe que ele retorna apenas valores únicos, mas sabendo que eu estava obtendo valores únicos de qualquer maneira, essa solução funcionou para mim.
A saída é:
fonte
Dê uma olhada na minha implementação. É seguro contra listas nulas.
fonte