Compartir a través de


Filtrado de datos en C# con LINQ

El filtrado hace referencia al funcionamiento de restringir el conjunto de resultados para que contenga solo los elementos que cumplen una condición especificada. También se conoce como seleccionar elementos que coinciden con la condición especificada.

Importante

Estos ejemplos usan un origen de datos System.Collections.Generic.IEnumerable<T>. Los orígenes de datos basados en System.Linq.IQueryProvider usanSystem.Linq.IQueryable<T> orígenes de datos y árboles de expresión . Los árboles de expresión tienen limitaciones en la sintaxis de C# permitida. Además, cada origen de datos IQueryProvider, como EF Core puede imponer más restricciones. Compruebe la documentación del origen de datos.

En la ilustración siguiente se muestran los resultados del filtrado de una secuencia de caracteres. El predicado de la operación de filtrado especifica que el carácter debe ser "A".

Diagrama que muestra una operación de filtrado LINQ

Los métodos del operador de consulta estándar que realizan la selección se muestran en la tabla siguiente:

Nombre del método Descripción Sintaxis de la expresión de consulta de C# Más información
OfType Selecciona valores según su capacidad de ser convertidos a un tipo específico. No aplicable. Enumerable.OfType

Queryable.OfType
Dónde Selecciona valores basados en una función de predicado. where Enumerable.Where

Queryable.Where

En el ejemplo siguiente se usa la where cláusula para filtrar desde una matriz esas cadenas que tienen una longitud específica.

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query = from word in words
                            where word.Length == 3
                            select word;

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

La consulta equivalente mediante la sintaxis del método se muestra en el código siguiente:

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query =
    words.Where(word => word.Length == 3);

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

Consulte también