Operadores de LINQ: Quantifier

Tabla de contenidos:

All

El operador All comprueba si todos los elementos de una secuencia cumplen una condición.

Código necesario para los ejemplos:

Una lista de nombres:

List<string> nombres = new List<string> {"Jesus", "Maria", "Julia", "Carla"};

Volver al operador All

All:

public static bool All<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

Como parámetro recibe un delegado que será la condición que ha de cumplir (o no) los elementos de una secuencia. Devuelve un bool.

Por ejemplo, ¿Todos los nombres de la lista tienen 5 caracteres?:

bool cinco = nombres.All(n => n.Length == 5);

¿Verdad que si? Claro que si:

True

¿Pero terminan todos los nombres por a?

bool a = nombres.All(n => n.EndsWith("a"));

Casi, así que:

False

Volver a la tabla de contenidos

Any

El operador Any comprueba si una secuencia contiene elementos ya sean de cualquier tipo o con una condición.

Código necesario para los ejemplos:

Una lista de nombres:

List<string> nombres = new List<string> {"Jesus", "Maria", "Julia", "Carla"};

Una lista vacía:

List<int> vacia = new List<int>();

Volver al operador Any

Any estándar:

public static bool Any<TSource>(
	this IEnumerable<TSource> source
)

El operador se usa en una secuencia para determinar si contiene elementos o no. Devuelve un bool.

Por ejemplo, con la lista de nombres:

bool any = nombres.Any();

Si que hay nombres:

True

Pero hay algo en la lista de números:

bool any = vacia.Any();

No, no hay nada:

False

Volver al operador Any

Any + condición:

public static bool Any<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

En esta sobrecarga comprobaremos si existe algún elemento que cumpla la condición que pasaremos como parámetro al operador. Solo hace falta que uno cumpla la condición.

¿Algún nombre que termine en s?:

bool any = nombres.Any(n => n.EndsWith("s"));

Si que hay si:

True

¿Alguno de 6 caracteres?:

bool any = nombres.Any(n => n.Length == 6);

No, todos de 5:

False

Volver a la tabla de contenidos

Contains

El operador Contains comprueba si una secuencia contiene un elemento especificado.

Código necesario para los ejemplos:

Una lista de nombres:

List<string> nombres = new List<string> {"Jesus", "Maria", "Julia", "Carla"};

Un comparador de iniciales:

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 Contains

Contains estándar:

public static bool Contains<TSource>(
	this IEnumerable<TSource> source,
	TSource value
)

Le pasamos como parámetro el valor que queremos ver si existe en la secuencia. Devuelve un bool.

¿Habrá alguien con el nombre Julia en nuestra lista de nombres?:

bool julia = nombres.Contains("Julia");

Sí, sin duda:

True

¿Y algún ́lvaro?:

bool alvaro = nombres.Contains("Alvaro");

No, esta vez no:

False

Volver al operador Contains

Contains + comparador personalizado:

public static bool Contains<TSource>(
	this IEnumerable<TSource> source,
	TSource value,
	IEqualityComparer<TSource> comparer
)

Ahora tenemos la posibilidad de usar nuestro propio comparador personalizado.

¿Algún nombre que empiece por C?:

bool c = nombres.Contains("C", new ComparadorInicial());

Sí, está Carla:

True

¿Alguno que empece por H?:

bool h = nombres.Contains("H", new ComparadorInicial());

No.

False

Volver a la tabla de contenidos

Tags:

Un comentario

Dejar un comentario