Share via


Comment : retourner une requête à partir d'une méthode (Guide de programmation C#)

Mise à jour : novembre 2007

Cet exemple indique comment retourner une requête à partir d'une méthode dans la valeur de retour et en tant que paramètre de sortie.

Toute requête doit avoir un type de IEnumerable ou IEnumerable<T>, ou un type dérivé tel que IQueryable<T>. Par conséquent, toute valeur de retour ou paramètre de sortie d'une méthode qui retourne une requête doit également avoir ce type. Si une méthode matérialise une requête dans un type List<T> concret ou un type Array, il est considéré comme retournant les résultats de la requête au lieu de la requête elle-même. Une variable de requête retournée à partir d'une méthode peut néanmoins être composée ou modifiée.

Pour obtenir un exemple d'exécution d'une requête passée à une méthode, consultez Object Dumper, exemple.

Exemple

Dans l'exemple suivant, la première méthode retourne une requête comme valeur de retour et la seconde méthode retourne une requête comme paramètre de sortie. Notez que dans les deux cas, c'est une requête, et non des résultats de requête, qui sont retournés.

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

Compilation du code

  • Créez un projet Visual Studio qui cible la version 3.5 du .NET Framework. Par défaut, le projet possède une référence à System.Core.dll et une directive using pour l'espace de noms System.Linq.

  • Copiez le code dans votre projet.

  • Appuyez sur F5 pour compiler et exécuter le programme.

  • Appuyez sur n'importe quelle touche pour quitter la fenêtre de console.

Voir aussi

Concepts

Expressions de requête LINQ (Guide de programmation C#)