Language Integrated
Query (Consultas integradas en el lenguaje) es un set de
librerías de Microsoft .Net
Framework para trabajar con data sources. LinQ proporciona una
capa de abstracción entre los lenguajes de .NET y cada vez más fuentes de datos
subyacentes.
LinQ proporciona a los desarrolladores una forma de
consultar datos con un lenguaje muy similar al utilizado en sus desarrollos,
principalmente C# o VB.NET.
Recuerda que aquí tienes el indice de todos los posts del Curso de LinQ.
Quitándonos de formalismos, LinQ, puede ser que sea uno de
los lanzamientos más importantes de los últimos tiempos en el mundo del
desarrollo. A nivel personal, LinQ es una de esas partes que adoptas de forma rapidísima
y que hacen que tu productividad, limpieza de código y facilidad de desarrollo aumenten
exponencialmente. Cuando lo usas a diario, cuesta mucho imaginarse un día a día
sin él, y mucho menos un cambio de tecnología.
LinQ ha sido uno de esos avances que han hecho que Microsoft
gane una serie enteros sobre su competencia facilitando a raudales la vida del
desarrollador.
LinQ fue desarrollado para versión 3.0 del .NET Framework,
pudiéndose instalar como extensión sobre Visual Studio 2005,
aunque no fue hasta la aparición de Visual Studio 2008
y el .NET Framework 3.5 que vino de inicio con su instalación estándar.
LinQ se ha convertido en algo tan común en un desarrollo de
.NET, que esté añade el using de
su librería para prácticamente el 100% de los tipos de proyectos contenidos en
las plantillas de Visual Studio.
LinQ está disponible en una serie de sabores diferentes:
- Linq To Objects
- Linq To SQL
- Linq To Entities
- Linq To DataSets
- Linq To XML
Todos ellos desarrollados por Microsoft, aunque gracias a
las capacidades de extensión de las que goza hay un gran número de
implementaciones de terceros:
- Linq to ADO.NET Data Services
- Linq to OLAP cubes in SSAS.
- Linq to Google.
- Linq to MySQL
- Linq to PostgreSQL
- Linq to NHibernate
- Linq to DataObjects
- Linq to db4o
- Linq to Twitter
- Linq to Wikipedia
- Y un largo etc.
Nosotros nos centraremos principalmente en el primero de
todos LinQ to Objects,
ya que este es la base para todos los demás.
La idea es intentar empezar desde cero, pero dando una
visión interna de la implementación para conseguir tener un control sobre las
técnicas y su funcionamiento interno y no basarnos simplemente en la analogía
de lanzar una query a
objetos de datos en memoria como si fuera una sentencia SQL. Me gustaría que
todos los niveles de usuarios, tanto los que nunca han visto nada, los que
utilizan consultas de forma esporádicas o los más avanzados, saquen jugo a esta
serie de posts
sobre LinQ. Para todo esto, empezaremos sobre las bases sobre las que se apoya
la tecnología y que no forman parte de las librerías de LinQ, pero son
esenciales a la hora de comprender su uso y elevarse hacía las partes más
avanzadas del mismo.
Nuestra primera consulta de LinQ.
Code:
Como podemos observar tenemos 2 formas de expresar nuestras
consultas en LinQ:
- Expresión Lambda: Es la forma más cercana al lenguaje puro de realizar la consulta y utiliza la nomenclatura y forma de hacer de la llamada programación funcional.
- Expresión de Consulta: Es una composición de la primera opción envuelta en el llamado ‘azúcar sintáctico’ que facilita la lectura y escritura para todos los desarrolladores provenientes del mundo SQL. Como se puede apreciar utiliza prácticamente la misma estructura de una consulta de SQL ANSI. La diferencia más esencial se encuentra en la posición de los operadores, ya que en LinQ cambia el orden y sus consultas empiezan por la cláusula from en vez de empezar por la cláusula Select como en SQL. Esto trajo bastante controversia en los inicios de LinQ, pero fue necesario hacer este cambio, para que las herramientas de desarrollo pudieran tener toda la información y poder hacer uso del intellisense.
Pues hasta aquí la introducción, a partir de aquí ya
entraremos en materia de forma más seria en el siguiente post.
Muy útil Juan Francisco
ResponderEliminarMuchas gracias por tu comentario,
ResponderEliminarEspero que cuando finalice todo el curso, sigas con la misma opinión.
Un saludo.
Indique a qué expresión pertenece el código que se muestra:
ResponderEliminarvar personasConNombreEmpiezaPorA = Persona.DevolverPersonas().Where(p => p.Nombre.StartsWith("A"));
Expresión compuesta
Expresión de consulta
Expresión LinQ
Expresión
Expresión Lambda