Skip to main content

¿Qué es una consulta integrada de idiomas?

La consulta integrada de lenguaje (LINQ) proporciona la capacidad de integrar sin problemas la sintaxis de consulta declarativa en lenguajes imperativos, principalmente C # y VB.NET. El desarrollo de LINQ resolvió los problemas que los desarrolladores que trabajan en entornos orientados a objetos encuentran al realizar consultas. Se introdujo como parte de Microsoft® .NET Framework versión 3.5 en noviembre de 2007 y en el nombre en código de Visual Studio® "Orcas".

Antes de la creación de la consulta integrada de idiomas, los lenguajes .NET no tenían una forma nativa de consultar bases de datos relacionales o documentos XML. Los desarrolladores que escriben en estos lenguajes tuvieron que incorporar SQL o XQuery respectivamente como cadenas, y asignar manualmente los datos resultantes a objetos .NET. Los compiladores .NET no pudieron validar las cadenas de consulta y las asignaciones integradas, lo que permitió descubrir posibles errores en tiempo de ejecución.

Otro problema que los desarrolladores enfrentaron antes de la consulta integrada de idiomas fue que los lenguajes .NET solo tenían una sintaxis orientada a objetos para consultar colecciones de objetos .NET. Por lo general, el desarrollador iteraría sobre una colección de origen completa, creando nuevas colecciones de resultados basadas en criterios de búsqueda. El desarrollador también podría transformar los datos mientras crea las colecciones de resultados. Este enfoque fue engorroso; una consulta de selección simple escrita en C # o VB requeriría al menos cinco líneas de código, mientras que la misma consulta requeriría una línea de código en un lenguaje de consulta.

Los desafíos de las consultas dentro de un entorno orientado a objetos le dieron a Microsoft el ímpetu para crear LINQ. LINQ proporciona una sintaxis de consulta que recuerda a SQL para usarse en línea con C # o VB, completa con verificación de tipo estático. Al consultar colecciones .NET, en lugar de usar bucles anidados, los desarrolladores pueden usar la sintaxis LINQ para seleccionar elementos y transformar datos. Entre otras ventajas, esto resulta en menos líneas de código en comparación con la sintaxis puramente orientada a objetos.

Al acceder a fuentes de datos externas, LINQ y los componentes de soporte eliminan la necesidad de lenguajes de consulta integrados y asignaciones de datos dentro de un lenguaje .NET. Para realizar la asignación de datos, LINQ depende de componentes llamados proveedores de LINQ. LINQ-to-Objects es el proveedor de acciones que permite a LINQ acceder a colecciones .NET. Del mismo modo, hay proveedores para acceder a bases de datos relacionales y documentos XML. La mayoría de estos proveedores son componentes de terceros no incluidos en .NET Framework. Independientemente del proveedor utilizado, todas las consultas usan la misma sintaxis LINQ.

Entre la sintaxis de consulta integrada del lenguaje y los proveedores hay una biblioteca de operadores de consulta agregados a .NET Framework como parte de las instalaciones de LINQ. Estos operadores realizan tareas tales como filtrado, ordenación, operaciones de teoría de conjuntos y agregación. Como estos operadores son parte de .NET Framework, también se pueden usar sin LINQ si el desarrollador así lo elige.