LINQ y sintaxis lambda

El otro día fui un poco crítico con la sintaxis de LINQ, así que esta semana he estado curioseando un poco más hasta encontrar que existe una sintaxis alternativa: la sintaxis lambda.

Aun siendo mucho menos cómoda que la nueva sintaxis de consulta en las nuevas versiones de C# y VB.NET, es interesante porque se ve el funcionamiento de las expresiones lambda (fundamentadas en el cálculo lambda) y cómo han sido necesarias para implementar LINQ.

Siguiendo con el ejemplo del artículo anterior, una consulta usando la nueva sintaxis sería algo así (he añadido un order by, para completar):

var directors = from movie in movies
                     where movie.Country == "Spain"
                     orderby movie.Year
                     select movie.Director;

Lo importante aquí es que al princpio se declara movie (por eso se hace primero el from, sino sería imposible autocompletar los miembros). Después, se aplica un where, in orderby y un select. Esto, traducido a la version “larga” con expresiones lambda sería:

var directors = movies
                     .Where(movie => movie.Country == "Spain")
                     .OrderBy(movie =>; movie.Year)
                     .Select(movie => movie.Director);

Esto, aunque parezca un poco esotérico simplemente usa el operador lambda => para crear una función nueva implícita que se aplica a movie, siendo movie cada elemento de la colección movies. Cada una de las funciones .Where(), .OrderBy() y .Select() devuelve a su vez una colección de elementos.

Así que esto es lo que hace automáticamente el editor y más adelante el compilador para poder ofrecer una experiencia muy interesante al desarrollador. Aún así, la sintaxis basada en operadores lambda es necesaria cuando lo que deseamos hacer no dispone de una instrucción específica en LINQ.

Después de ver todo esto, ya me gusta un poco más la query syntax y entiendo mejor los motivos por los que se ha hecho como es.

Link | Query Syntax vs Method Syntax

Si te ha gustado esta entrada, por favor deja un comentario o suscríbete al RSS para que puedas recibir todas las novedades en tu lector de feeds favorito.
This entry was posted in Programación and tagged , , . Bookmark the permalink.

2 Responses to "LINQ y sintaxis lambda"

Leave a reply