let-Klausel (C#-Referenz)

Bei Abfrageausdrücken ist es gelegentlich nützlich, das Ergebnis eines Unterausdrucks zu speichern, um es in nachfolgenden Klauseln zu verwenden. Verwenden Sie dazu das let-Schlüsselwort, das eine neue Bereichsvariable erstellt und sie mit dem von Ihnen bereitgestellten Ergebnis des Ausdrucks initialisiert. Nachdem die Bereichsvariable mit einem Wert initialisiert wurde, kann sie nicht mehr zum Speichern eines anderen Werts verwendet werden. Wenn die Bereichsvariable jedoch einen abfragbaren Typ enthält, kann sie abgefragt werden.

Beispiel

Im folgenden Beispiel wird let auf zwei Weisen verwendet:

  1. Um einen Enumerable-Typ zu erstellen, der selbst abgefragt werden kann.

  2. Um es der Abfrage zu ermöglichen, ToLower nur ein Mal für die Bereichsvariable word aufzurufen. Wenn Sie let nicht verwenden würden, müssten Sie ToLower in jedem Prädikat in der where-Klausel aufrufen.

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
*/

Siehe auch

C#-Referenz
Abfrageschlüsselwörter (LINQ)
LINQ-Abfrageausdrücke
Getting Started with LINQ in C#
Gewusst wie: Behandeln von Ausnahmen in Abfrageausdrücken