TOC

This article has been localized into Spanish by the community.

LINQ.:

LINQ: sintaxis de consulta frente a sintaxis de método

En el artículo anterior, pudimos ver rápidamente cómo se ven ambas sintaxis de LINQ, pero volvamos a ponerlas en la mesa una al lado de la otra, de modo que esté seguro de lo que discutiremos en este artículo:

 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);

Si bien las dos líneas lograrán exactamente lo mismo, la diferencia sintáctica es bastante clara: la query syntax se parece más a otros lenguajes de consulta, p. SQL y menos como una declaración regular de C #. La method syntax, por otro lado, se parece mucho al resto del código C # que ha visto en este tutorial.

Entonces, la mayor diferencia es definitivamente la sintaxis y, por lo tanto, verá las dos variaciones utilizadas al leer artículos de C # y encontrar respuestas a las preguntas que pueda tener. Parece que la sintaxis de la consulta es un poco más popular porque a algunas personas les resulta más fácil de leer que la sintaxis del método; de todos modos, estas podrían ser personas que están acostumbradas a expresar operaciones de recuperación de datos en SQL. Por otro lado, si nunca antes ha usado un lenguaje de consulta como SQL, pero tiene alguna experiencia en C #, entonces puede encontrar la sintaxis del método más fácil de leer. Además, para al menos un par de operaciones, como contar los elementos en el resultado de la consulta, deberá usar la sintaxis del método.

Expresiones lambda.

En el ejemplo de sintaxis del método, puede notar algo que no ha visto antes, como un parámetro del método Where (). Se parece a esto:

name => name.Length <= 8

Esto se llama expresión Lambda y, aunque no es una pieza específica de la funcionalidad LINQ, se usa MUCHO en el mundo de LINQ. Por lo tanto, también lo verá mucho en los siguientes artículos, y si bien entraré en más detalles sobre Lambda Expressions en otro artículo, este es un buen momento para obtener una comprensión muy básica de cómo funcionan.

En realidad es bastante simple. Una expresión Lambda tiene un lado izquierdo y un lado derecho, divididos por el operador => (no debe confundirse con el operador "mayor o igual que", que se ve así:>=).

En el lado izquierdo , tenemos los parámetros de entrada: puede haber varios, pero en nuestro ejemplo, solo hay uno, que es la variable nombre . En este caso, proviene del método Where (), de iterar sobre nuestra lista de nombres y podemos elegir el nombre. Elegí "nombre", porque eso es lo que encontrarás en una lista de nombres, pero también podrías llamarlo "x", "z", "foobar" o cualquier otra cosa.

En el lado derecho , tenemos la parte expresión / declaración. Aquí es donde generamos el resultado esperado: en este caso, un valor booleano que indica al método Where () si se debe incluir el nombre en cuestión o no. Respondemos eso con una expresión, diciendo que queremos incluir el nombre si tiene una longitud de 8 (o menos) caracteres. Podemos (pero no es obligatorio) usar la entrada (lado izquierdo) para determinar esto. Una vez más, nos referimos a él como "nombre", pero podríamos haberlo llamado "x" en su lugar; en ese caso, la declaración se habría visto así:

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

Las expresiones Lambda son más que solo consultas LINQ, pero como se mencionó, son importantes cuando se usa LINQ; lo verá en los siguientes artículos. Si desea saber más sobre las expresiones Lambda en general, eche un vistazo en otro lugar de este tutorial donde se tratará el tema.

Resumen.

LINQ viene en dos sabores sintácticos: la sintaxis de consulta y el método. Pueden hacer casi lo mismo, pero si bien la sintaxis de la consulta es casi un nuevo lenguaje dentro de C #, la sintaxis del método se parece a las llamadas regulares al método C #. En este tutorial, usaremos principalmente la sintaxis del método , cuando analicemos todas las posibles operaciones disponibles con LINQ en los próximos artículos.


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!