Combinar listas é uma operação fundamental na programação C#. Este artigo explora várias técnicas eficazes para juntar listas, cada uma com suas próprias vantagens e casos de uso. Examinaremos diferentes abordagens, desde a concatenação simples até operações mais sofisticadas, como mesclar com remoção de duplicatas ou emparelhamento de elementos.
Sumário
- Juntando Listas com
AddRange()
- Concatenando Listas usando
Concat()
(LINQ) - Junção Manual de Listas com um Loop
foreach
- Combinando Listas e Removendo Duplicatas com
Union()
(LINQ) - Inserindo uma Lista em Outra com
InsertRange()
- Emparelhando Elementos com o Método
Zip()
- Conclusão
Juntando Listas com AddRange()
O método AddRange()
oferece uma maneira direta e eficiente de anexar uma lista ao final de outra. Este método modifica a lista original.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.AddRange(list2);
Console.WriteLine("Lista Juntada:");
Console.WriteLine(string.Join(" ", list1)); // Saída: 1 2 3 4 5 6
}
}
Concatenando Listas usando Concat()
(LINQ)
O método Concat()
do LINQ fornece uma abordagem somente leitura para concatenação de listas. Ele cria uma nova lista contendo todos os elementos das duas listas de entrada sem alterar as originais.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
var joinedList = list1.Concat(list2).ToList();
Console.WriteLine("Lista Juntada:");
Console.WriteLine(string.Join(" ", joinedList)); // Saída: 1 2 3 4 5 6
}
}
Junção Manual de Listas com um Loop foreach
Uma abordagem manual usando um loop foreach
oferece controle máximo, particularmente útil ao lidar com lógica de junção mais complexa.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
List<int> joinedList = new List<int>();
joinedList.AddRange(list1);
foreach (int num in list2)
{
joinedList.Add(num);
}
Console.WriteLine("Lista Juntada:");
Console.WriteLine(string.Join(" ", joinedList)); // Saída: 1 2 3 4 5 6
}
}
Combinando Listas e Removendo Duplicatas com Union()
(LINQ)
O método Union()
mescla eficientemente duas listas, eliminando entradas duplicadas.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 3, 4, 5 };
var joinedList = list1.Union(list2).ToList();
Console.WriteLine("Lista Juntada (duplicatas removidas):");
Console.WriteLine(string.Join(" ", joinedList)); // Saída: 1 2 3 4 5
}
}
Inserindo uma Lista em Outra com InsertRange()
InsertRange()
permite a inserção precisa de uma lista em outra em um índice especificado.
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.InsertRange(2, list2); // Insere list2 começando no índice 2
Console.WriteLine("Lista Juntada:");
Console.WriteLine(string.Join(" ", list1)); // Saída: 1 2 4 5 6 3
}
}
Emparelhando Elementos com o Método Zip()
O método Zip()
emparelha elementos correspondentes de duas listas com base em seu índice. Isso é benéfico quando você precisa combinar elementos que têm uma correspondência relacional.
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<string> list1 = new List<string> { "A", "B", "C" };
List<int> list2 = new List<int> { 1, 2, 3 };
var zippedList = list1.Zip(list2, (str, num) => str + num).ToList();
Console.WriteLine("Lista Emparelhada:");
Console.WriteLine(string.Join(" ", zippedList)); // Saída: A1 B2 C3
}
}
Conclusão
C# oferece um rico conjunto de ferramentas para manipulação de listas. A escolha do método depende muito dos requisitos específicos de sua tarefa. Considere se você precisa modificar listas originais, remover duplicatas ou emparelhar elementos correspondentes ao selecionar a abordagem mais apropriada.