Operadores de LINQ: Equality

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:

Un comentario

Dejar un comentario