Condividi tramite


Procedura: ottenere una query da un metodo (Guida per programmatori C#)

Aggiornamento: novembre 2007

In questo esempio viene illustrato come restituire una query da un metodo nel valore restituito e come parametro out.

Una query deve contenere un tipo di IEnumerable o IEnumerable<T> o un tipo derivato quale IQueryable<T>. Pertanto qualsiasi valore restituito o parametro out di un metodo che restituisce una query deve contenere anche quel tipo. Se un metodo materializza una query in un tipo List<T> o Array concreto, verranno restituiti i risultati della query anziché la query stessa. Una variabile di query restituita da un metodo può ancora essere composta o modificata.

Per un esempio di come eseguire una query passata a un metodo, vedere Esempio Object Dumper.

Esempio

Nell'esempio seguente il primo metodo restituisce una query come valore restituito mentre il secondo metodo restituisce una query come parametro out. In entrambi casi, viene restituita una query e non i risultati della query.

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();
    }
}

Compilazione del codice

  • Creare un progetto di Visual Studio destinato a .NET Framework versione 3.5. Per impostazione predefinita, il progetto contiene un riferimento a System.Core.dll e una direttiva using per lo spazio dei nomi System.Linq.

  • Copiare il codice nel progetto.

  • Premere F5 per compilare ed eseguire il programma.

  • Premere un tasto per chiudere la finestra della console.

Vedere anche

Concetti

Espressioni query LINQ (Guida per programmatori C#)