let (Cláusula, Referencia de C#)

Actualización: noviembre 2007

En una expresión de consulta, a veces resulta útil almacenar el resultado de una subexpresión para utilizarlo en cláusulas posteriores. Para ello, puede utilizar la palabra clave let, que crea una nueva variable de rango y la inicializa con el resultado de la expresión que proporcione. Al inicializarse con un valor, la variable de rango no puede utilizarse para almacenar otro valor. Sin embargo, si la variable de rango contiene un tipo que se puede consultar, puede realizarse una consulta en ésta.

Ejemplo

En el ejemplo siguiente, let se utiliza de dos formas:

  1. Para crear un tipo enumerable que se puede consultar.

  2. Para habilitar que la consulta llame a ToLower sólo una vez en la variable de rango word. Si no utiliza let, tendría que llamar a ToLower en cada predicado de la cláusula 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
*/

Vea también

Tareas

Cómo: Controlar excepciones con expresiones de consultas (Guía de programación de C#)

Conceptos

Expresiones de consultas con LINQ (Guía de programación de C#)

Otros recursos

Referencia de C#

Palabras clave de consultas (Referencia de C#)

Introducción a LINQ en C#