A palavra reservada let permite criar um variável e utilizar o valor da mesma em diferentes pontos de uma query linq.
No seguinte exemplo o let foi utilizado de duas formas
Para criar um enumerable, que pode ser pesquisado
Para permitir que a consulta chame ToLower apenas uma vez. Sem usar let, você teria que chamar ToLower em cada predicate na 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
*/
Achou difícil de entender? Veja mais alguns exemplos abaixo
Repare que sem o uso do let foi necessário usar o método do ToLower mais de uma vez
from s in studentList
where s.StudentName.ToLower().StartsWith("r")
select s.StudentName.ToLower();
Note que uso do let na query linq permitiu que o método ToLower fosse chamado menos vezes
from s in studentList
let lowercaseStudentName = s.StudentName.ToLower()
where lowercaseStudentName.StartsWith("r")
select lowercaseStudentName;
Tenha em mente que estes exemplos são de queries simples. É muito provável que você irá trabalhar com coisas de complexidade maior e por isso conhecer esse tipo de recurso pode melhorar bastante a legibilidade do seu código.
Comments