TOC

This article has been localized into Portuguese by the community.

LINQ:

LINQ: Sintaxe de consulta vs. Sintaxe de método

No artigo anterior, obtivemos um rápido vislumbre de como as sintaxes LINQ parecem, mas vamos apenas colocá-las na mesa novamente ao lado uma da outra, então você tem certeza do que discutiremos neste artigo:

 var listOfNames = new List<string>()
{
    "John Doe",
    "Jane Doe",
    "Jenna Doe",
    "Joe Doe"
};

// Query syntax
var qNames = from name in listOfNames where name.Length <= 8 select name;
// Method syntax
var mNames = listOfNames.Where(name => name.Length <= 8);

Embora as duas linhas realizem exatamente a mesma coisa, a diferença de sintaxe é bem clara: a sintaxe de consulta se parece mais com outras linguagens de consulta, por exemplo, SQL e menos como uma instrução C # regular. A sintaxe do método , por outro lado, se parece muito com o resto do código C # que você viu neste tutorial.

Portanto, a maior diferença é definitivamente apenas a sintaxe e, portanto, você verá as duas variações usadas ao ler artigos em C # e encontrar respostas para as perguntas que você possa ter. Parece que a sintaxe de consulta é um pouco mais popular porque algumas pessoas acham mais fácil ler do que a sintaxe do método - estas podem ser pessoas que estão acostumadas a expressar operações de recuperação de dados no SQL de qualquer maneira. Por outro lado, se você nunca usou uma linguagem de consulta como o SQL antes, mas tiver alguma experiência em C #, poderá achar a sintaxe do método mais fácil de ler. Além disso, para pelo menos algumas operações, como contar os itens no resultado da consulta, você terá que usar a sintaxe do método.

Expressões Lambda

No exemplo da sintaxe do método, você pode notar algo que você não viu antes, como um parâmetro para o método Where(). Se parece com isso:

name => name.Length <= 8

Isso é chamado de Lambda Expression e, embora não seja uma parte específica da funcionalidade LINQ, é usado MUITO no mundo do LINQ. Portanto, você também verá muito nos artigos a seguir, e embora eu vá para maiores detalhes sobre as Expressões do Lambda em outro artigo, este é um bom momento para obter uma compreensão básica de como eles funcionam.

Na verdade é bem simples. Uma Expressão Lambda tem um lado esquerdo e um lado direito, dividido pelo operador = & gt; (não deve ser confundido com o operador "maior que ou igual a", que é assim: & gt; =).

No lado esquerdo , temos o (s) parâmetro (s) de entrada - pode haver vários, mas no nosso exemplo, há apenas um, que é a variável nome . Neste caso, ele vem do método Where(), da iteração sobre nossa lista de nomes e nós escolhemos o nome. Eu escolhi "name", porque é isso que você encontrará em uma lista de nomes, mas você também pode chamá-lo de "x", "z", "foobar" ou qualquer outra coisa.

No lado direito , temos a parte expression/statement. É aqui que geramos o resultado esperado - nesse caso, um valor booleano informando ao método Where() se deseja incluir o nome em questão ou não. Respondemos isso com uma expressão, dizendo que queremos incluir o nome se ele tiver um comprimento de 8 (ou menos) caracteres. Podemos (mas não é obrigatório) usar a entrada (lado esquerdo) para determinar isso. Novamente, nos referimos a ele como "nome", mas poderíamos chamá-lo de "x" - nesse caso, a declaração seria assim:

var mNames = listOfNames.Where(x => x.Length <= 8);

Lambda Expressions são mais do que apenas consultas LINQ, mas, como mencionado, elas são importantes ao usar o LINQ - você verá isso nos próximos artigos. Se você quiser saber mais sobre o Lambda Expressions em geral, dê uma olhada em outro lugar neste tutorial onde o tópico será abordado.

Resumo

LINQ vem em dois sabores sintáticos: A sintaxe da consulta e do método. Eles podem fazer quase o mesmo, mas enquanto a sintaxe de consulta é quase um novo idioma dentro de C #, a sintaxe do método se parece com as chamadas de método C # normais. Neste tutorial, estaremos usando principalmente a sintaxe do método , quando discutirmos todas as possíveis operações disponíveis com o LINQ nos próximos artigos.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!