top of page
  • Foto do escritorFábio Henrique

LINQ let keyword

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

  1. Para criar um enumerable, que pode ser pesquisado

  2. 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.

138 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page