Tabla de contenidos:
SequenceEqual
El operador SequenceEqual sirve para comprobar la igualdad entre dos secuencias
Código necesario para los ejemplos:
Dos listas con el mismo contenido:
List<string> lista1 = new List<string> { "Abuelo", "Madre", "Tio", "Sobrina" };
List<string> lista2 = new List<string> { "Abuelo", "Madre", "Tio", "Sobrina" };
Una lista con contenido distinto:
List<string> listaDis = new List<string> {"Agencia", "Mina", "Tronco", "Sandalia"};
Un comparador personalizado:
public class ComparadorInicial : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x[0] == y[0];
}
public int GetHashCode(string obj)
{
return obj[0].GetHashCode();
}
}
Volver al operador SequenceEqual
SequenceEqual estándar:
public static bool SequenceEqual<TSource>( this IEnumerable<TSource> first, IEnumerable<TSource> second )
Una secuencia llamará a este operador pasando una segunda secuencia como parámetro. Se comparará cada elemento de la secuencia usando el comparador por defecto. Devolverá un bool indicandonos si son iguales o no las secuencias.
Por ejemplo, vamos a comprar las dos listas que tenemos en con el mismo contenido:
bool igual = lista1.SequenceEqual(lista2);
Irá comparando cada elemento usando el comparador por defecto de dicho elemento, en este caso el comparador de las cadenas.
Como las listas tienen el mismo contenido, pues dará:
true
¿Qué pasa si la comparamos con la lista distinta?
bool igual = lista1.SequenceEqual(listaDis);
Auch, ahora el resultado es:
false
Aunque no debería de sorprendernos.
Volver al operador SequenceEqual
SequenceEqual + comparador personalizado:
public static bool SequenceEqual<TSource>( this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer )
Ahora podremos comparar los elementos de las secuencias usando un comparador personalizado.
Vamos a comparar usando solo la inicial:
bool igual = lista1.SequenceEqual(listaDis, new ComparadorInicial());
Aquí comparará los elementos de la lista1 y de la lista2 usando nuestro comparador personalizado. En otras palabras comprobará la inicial de cada palabra, y como coinciden, el resultado es:
true
Volver a la tabla de contenidos
Tags: LINQ

