let (Cláusula, Referencia de C#)
En una expresión de consulta, a veces resulta útil almacenar el resultado de una subexpresión para usarlo en cláusulas posteriores. Puede hacer esto con la palabra clave let
, que crea una variable de rango y la inicializa con el resultado de la expresión que proporcione. Una vez inicializado con un valor, la variable de intervalo no se puede usar para almacenar otro valor. En cambio, si la variable de rango contiene un tipo consultable, se puede consultar.
Ejemplo
En el siguiente ejemplo, se usa let
de dos maneras:
Para crear un tipo enumerable que se puede consultar.
Para habilitar la consulta para que llame a
ToLower
solo una vez en la variable de rangoword
. Sin usarlet
, tendría que llamar aToLower
en cada predicado de la cláusulawhere
.
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);
}
}
}
/* 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
*/