Предложение let (справочник по C#)

Обновлен: Ноябрь 2007

В выражении запроса иногда полезно сохранить результат выполнения какой-то составной части выражения, чтобы использовать его в последующих предложениях. Это можно выполнить с помощью ключевого слова let, создающего новую переменную диапазона и инициализирующего ее результатом предоставленного выражения. После инициализации значением переменная диапазона не может использоваться для хранения другого значения. Однако, если в переменной диапазона хранится запрашиваемый тип, то его можно запросить.

Пример

В следующем примере ключевое слово let используется двумя способами:

  1. Для создания перечислимого типа, который сам может запрашиваться.

  2. Для обеспечения возможности запросу вызывать метод ToLower для переменной диапазона word только один раз. Без ключевого слова let метод ToLower пришлось бы вызвать в каждом предикате предложения 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
*/

См. также

Задачи

Практическое руководство. Обработка исключений в выражениях запросов (Руководство по программированию на C#)

Основные понятия

Выражения запросов LINQ (Руководство по программированию в C#)

Другие ресурсы

Справочник по C#

Ключевые слова запроса (Справочник по C#)

Приступая к работе с LINQ в C#