Compartir a través de


Cómo: Devolver una consulta desde un método (Guía de programación de C#)

Actualización: noviembre 2007

Este ejemplo muestra cómo devolver una consulta desde un método en el valor devuelto y como un parámetro out.

Cualquier consulta debe tener un tipo de IEnumerable o IEnumerable<T>, o un tipo derivado como IQueryable<T>. Por consiguiente, cualquier valor devuelto o parámetro out de un método que devuelve una consulta también debe tener ese tipo. Si un método materializa una consulta en un tipo List<T> o Array concreto, se considera que está devolviendo los resultados de la consulta en lugar de la propia consulta. Una variable de consulta devuelta desde un método se puede componer o modificar.

Para obtener un ejemplo de cómo ejecutar una consulta que se pasa a un método, vea Ejemplo Object Dumper.

Ejemplo

En el ejemplo siguiente, el primer método devuelve una consulta como un valor devuelto, mientras que el segundo método devuelve una consulta como un parámetro out. Observe que, en ambos casos, lo que se devuelve es una consulta, y no los resultados de la consulta.

class MQ
{
    IEnumerable<string> QueryMethod1(ref int[] ints)
    {
        var intsToStrings = from i in ints
                            where i > 4
                            select i.ToString();
        return intsToStrings;
    }

    static void Main()
    {
        MQ app = new MQ();

        int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        var myQuery = app.QueryMethod1(ref nums);


        //execute myQuery
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        //modify myQuery
        myQuery = (from str in myQuery
                   orderby str descending
                   select str).
                  Take(3);

        // Executing myQuery after more
        // composition
        Console.WriteLine("After modification:");
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Compilar el código

  • Cree un proyecto de Visual Studio orientado a .NET Framework versión 3.5. De manera predeterminada, el proyecto tiene una referencia a System.Core.dll y una directiva using para el espacio de nombres System.Linq.

  • Copie el código en el proyecto.

  • Presione F5 para compilar y ejecutar el programa.

  • Presione cualquier tecla para salir de la ventana de consola.

Vea también

Conceptos

Expresiones de consultas con LINQ (Guía de programación de C#)