Comparteix a través de


Filtrar datos en C# con LINQ

El filtrado hace referencia a la operación de restringir el conjunto de resultados, de manera que solo contenga 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 de System.Collections.Generic.IEnumerable<T>. Los orígenes de datos basados en System.Linq.IQueryProvider usan orígenes de datos de System.Linq.IQueryable<T> y árboles de expresiones. Los árboles de expresiones tienen limitaciones en la sintaxis permitida de C#. Además, cada origen de datos de 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 de filtrar 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 en LINQ

Los métodos del operador de consulta estándar que realizan selecciones se indican en la sección siguiente.

Nombre del método Descripción Sintaxis de la expresión de consulta de C# Más información
OfType Selecciona valores en función de su capacidad para convertirse en un tipo especificado. No es aplicable. Enumerable.OfType

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

Queryable.Where

En el siguiente ejemplo se usa la cláusula where para filtrar de una matriz aquellas 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