Comparar dos listas en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Comparar listas para encontrar diferencias con el método Linq en C#
  2. Comparar listas para encontrar diferencias con la función List.Contains() en C#
Comparar dos listas en C#

Este tutorial discutirá métodos para comparar dos listas y encontrar diferencias en C#.

Comparar listas para encontrar diferencias con el método Linq en C#

Considere el siguiente escenario, tenemos 2 listas, list1 y list2, y queremos saber qué elementos de la list1 no están presentes en list2 y qué elementos de list2 no están presentes en list1. Se puede hacer con la ayuda de la función Except() en Linq. La consulta integrada de lenguaje o Linq se utiliza para consultar estructuras de datos en C#. La función Except() devuelve un conjunto de elementos de una lista que no están presentes en la otra lista. El siguiente ejemplo de código nos muestra cómo comparar dos listas en busca de diferencias con Linq en 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);
      }
    }
  }
}

Producción :

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

Comparamos las listas list1 y list2 por sus diferencias en el código anterior. Primero almacenamos los elementos presentes en list1 pero no en list2 en la nueva lista firstNotSecond. Luego almacenamos los elementos presentes en list2 pero no en list1 en la nueva lista secondNotFirst. Al final, imprimimos los elementos de las listas firstNotSecond y secondNotFirst. El único inconveniente es que cualquier valor repetido en una lista que no esté presente en la otra lista solo se imprimirá una vez.

Comparar listas para encontrar diferencias con la función List.Contains() en C#

La función List.Contains() se utiliza para determinar si un elemento está presente en una lista o no en C#. La función List.Contains(x) devuelve verdadero si el elemento x está presente en la lista y devuelve falso si el elemento x no está presente. Podemos usar el método List.Contains() con Linq para determinar qué elementos están presentes en una lista y no en la otra. El siguiente ejemplo de código nos muestra cómo podemos comparar dos listas en busca de diferencias con la función List.Contains() en 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);
      }
    }
  }
}

Producción :

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

Comparamos las listas list1 y list2 por sus diferencias en el código anterior. Primero almacenamos los elementos presentes en list1 pero no en list2 en la nueva lista firstNotSecond. Luego almacenamos los elementos que estaban presentes en list2 pero no en list1 en la nueva lista secondNotFirst. Al final, imprimimos los elementos de las listas firstNotSecond y secondNotFirst. Aquí, la salida se repite tantas veces como el valor de repetición. Este método debe preferirse al método anterior si queremos considerar la repetición 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

Artículo relacionado - Csharp List