Klauzula Let (odwołanie w C#)let clause (C# Reference)

W wyrażeniu zapytania jest czasami warto przechowywać wyników wyrażeń podrzędnych do jej używania w kolejnych klauzul.In a query expression, it is sometimes useful to store the result of a sub-expression in order to use it in subsequent clauses. Można to zrobić za pomocą let słowo kluczowe, które tworzy nową zmienną zakresu i inicjuje ją z wynikiem wyrażenia dostarczasz.You can do this with the let keyword, which creates a new range variable and initializes it with the result of the expression you supply. Po zainicjowaniu z wartością, zmienna zakresu nie może służyć do przechowywania inną wartość.Once initialized with a value, the range variable cannot be used to store another value. Jednakże jeśli typ odpytywalny jest przechowywana w zmiennej zakresu, może być badana.However, if the range variable holds a queryable type, it can be queried.

PrzykładExample

W poniższym przykładzie let jest używany na dwa sposoby:In the following example let is used in two ways:

  1. Aby utworzyć typ wyliczalny, który sam można wykonywać zapytania.To create an enumerable type that can itself be queried.

  2. Aby włączyć zapytanie, aby wywołać ToLower tylko jeden raz na zmiennej zakresu word.To enable the query to call ToLower only one time on the range variable word. Bez użycia let, trzeba wywoływać ToLower w każdej predykat w where klauzuli.Without using let, you would have to call ToLower in each predicate in the where clause.

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

Zobacz takżeSee also