Compare duas listas em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Compare listas para encontrar diferenças com o método Linq em C#
  2. Compare listas para encontrar diferenças com a função List.Contains() em C#
Compare duas listas em C#

Este tutorial discutirá métodos para comparar duas listas para encontrar diferenças em C#.

Compare listas para encontrar diferenças com o método Linq em C#

Considere o seguinte cenário, temos 2 listas, list1 e list2, e queremos saber quais elementos da list1 não estão presentes em list2 e quais elementos de list2 não estão presentes em list1. Isso pode ser feito com a ajuda da função Except() no Linq. O Linq ou consulta integrada de linguagem é usada para consultar estruturas de dados em C#. A função Except() retorna um conjunto de elementos de uma lista não presente na outra lista. O exemplo de código a seguir nos mostra como comparar duas listas para diferenças com Linq em C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace compare_lists {
  class Program {
    static void Main(string[] args) {
      List<int> list1 = new List<int> { 1, 1, 2, 3, 4 };
      List<int> list2 = new List<int> { 3, 4, 5, 6 };
      List<int> firstNotSecond = list1.Except(list2).ToList();
      var secondNotFirst = list2.Except(list1).ToList();
      Console.WriteLine("Present in List1 But not in List2");
      foreach (var x in firstNotSecond) {
        Console.WriteLine(x);
      }
      Console.WriteLine("Present in List2 But not in List1");
      foreach (var y in secondNotFirst) {
        Console.WriteLine(y);
      }
    }
  }
}

Resultado:

Present in List1 But not in List2 1 2 Present in List2 But not in List1 5 6

Comparamos as listas list1 e list2 quanto às diferenças no código acima. Primeiro armazenamos os elementos presentes em list1, mas não em list2 na nova lista firstNotSecond. Em seguida, armazenamos os elementos presentes em list2, mas não em list1 na nova lista secondNotFirst. No final, imprimimos os elementos das listas firstNotSecond e secondNotFirst. A única desvantagem é que quaisquer valores repetidos em uma lista que não estejam presentes na outra lista serão impressos apenas uma vez.

Compare listas para encontrar diferenças com a função List.Contains() em C#

A função List.Contains() é usada para determinar se um elemento está presente em uma lista ou não em C#. A função List.Contains(x) retorna verdadeiro se o elemento x estiver presente na lista e retorna falso se o elemento x não estiver presente. Podemos usar o método List.Contains() com o Linq para determinar quais elementos estão presentes em uma lista e não na outra. O exemplo de código a seguir nos mostra como podemos comparar duas listas para diferenças com a função List.Contains() em C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace compare_lists {
  class Program {
    static void Main(string[] args) {
      List<int> list1 = new List<int> { 1, 2, 3, 4 };
      List<int> list2 = new List<int> { 3, 4, 5, 6 };
      var firstNotSecond = list1.Where(i => !list2.Contains(i)).ToList();
      var secondNotFirst = list2.Where(i => !list1.Contains(i)).ToList();
      Console.WriteLine("Present in List1 But not in List2");
      foreach (var x in firstNotSecond) {
        Console.WriteLine(x);
      }
      Console.WriteLine("Present in List2 But not in List1");
      foreach (var y in secondNotFirst) {
        Console.WriteLine(y);
      }
    }
  }
}

Resultado:

Present in List1 But not in List2 1 1 2 Present in List2 But not in List1 5 6

Comparamos as listas list1 e list2 quanto às diferenças no código acima. Primeiro armazenamos os elementos presentes em list1, mas não em list2 na nova lista firstNotSecond. Em seguida, armazenamos os elementos que estavam presentes em list2, mas não em list1 na nova lista secondNotFirst. No final, imprimimos os elementos das listas firstNotSecond e secondNotFirst. Aqui, a saída é repetida tantas vezes quanto o valor de repetição. Este método deve ser preferido em relação ao método anterior se quisermos considerar a repetição de valores.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Csharp List