Share via


let, clause (Référence C#)

Mise à jour : novembre 2007

Dans une expression de requête, il est parfois utile de stocker le résultat d'une sous-expression pour l'utiliser dans les clauses suivantes. Vous pouvez faire ceci avec le mot clé let qui crée une variable de portée et l'initialise avec le résultat de l'expression que vous fournissez. Une fois initialisée avec une valeur, la variable de portée ne peut pas être utilisée pour stocker une autre valeur. Toutefois, si la variable de portée contient un type requêtable, elle peut être interrogée.

Exemple

Dans l'exemple suivant, let est utilisé de deux façons :

  1. Pour créer un type énumérable qui peut faire l'objet d'une requête.

  2. Pour permettre à la requête d'appeler ToLower une seule fois sur la variable de portée word. Si vous n'utilisez pas let, vous devez appeler ToLower dans chaque prédicat de la clause where.

class LetSample1
{
    static void Main()
    {
        string[] strings = 
        {
            "A penny saved is a penny earned.",
            "The early bird catches the worm.",
            "The pen is mightier than the sword." 
        };

        // Split the sentence into an array of words
        // and select those whose first letter is a vowel.
        var earlyBirdQuery =
            from sentence in strings
            let words = sentence.Split(' ')
            from word in words
            let w = word.ToLower()
            where w[0] == 'a' || w[0] == 'e'
                || w[0] == 'i' || w[0] == 'o'
                || w[0] == 'u'
            select word;

        // Execute the query.
        foreach (var v in earlyBirdQuery)
        {
            Console.WriteLine("\"{0}\" starts with a vowel", v);
        }

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    "A" starts with a vowel
    "is" starts with a vowel
    "a" starts with a vowel
    "earned." starts with a vowel
    "early" starts with a vowel
    "is" starts with a vowel
*/

Voir aussi

Tâches

Comment : gérer des exceptions dans des expressions de requête (Guide de programmation C#)

Concepts

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

Autres ressources

Référence C#

Mots clés de requête (Référence C#)

Mise en route de LINQ en C#