Que es el proyecto LINQ

Los programadores ahora están familiarizados con conceptos como las clases, objetos y métodos. Analizando la generación de tecnologías actual y siguiente, se hace evidente que el siguiente gran reto para la tecnología de la programación es reducir la complejidad del acceso e integrar la información que no se define de manera nativa utilizando la tecnología orientada a objetos. Las dos fuentes de información no orientadas a objetos más comunes son las bases de datos relacionales y XML.



En vez de añadir características específicas para el tratamiento de datos relacionales o XML a nuestros lenguajes de programación y motor de ejecución, con el proyecto LINQ hemos seguido un enfoque más general, y estamos añadiendo a .NET Framework facilidades de consulta de propósito general aplicables a todas las fuentes de información, y no solo a los datos relacionales o XML. Esta facilidad se llama ‘Consultas integradas en los lenguajes’ (Language Integrated Query - LINQ).



Utilizamos el término consultas integradas en los lenguajes para indicar que las consultas son una característica integrada del lenguaje de programación principal del desarrollador (por ejemplo C#, Visual Basic). Las consultas integradas en los lenguajes permiten que las expresiones de consulta se beneficien de los metadatos ricos, verificación de sintaxis en tiempo de compilación, tipado estático y ayuda IntelliSense que antes estaban disponibles solo para el código imperativo. Las consultas integradas en los lenguajes también hacen posible aplicar una única facilidad declarativa de propósito general a toda la información en memoria, y no solo a la información proveniente de fuentes externas.



Las consultas integradas en los lenguajes .NET definen un conjunto de operadores de consulta estándar de propósito general que hacen posible que las operaciones de recorrido, filtro y proyección sean expresadas de una manera directa pero declarativa en cualquier lenguaje de programación. Los operadores de consulta estándar permiten aplicar las consultas a cualquier fuente de información basada en IEnumerable. LINQ permite que terceros fabricantes aumenten el conjunto de operadores de consulta estándar, añadiendo los operadores de dominio específico que sean apropiados para el dominio o la tecnología de destino. Más importante aún es que terceros fabricantes también pueden reemplazar los operadores de consulta estándar con sus propias implementaciones que ofrezcan servicios adicionales como la evaluación remota, traducción de consultas, optimización, etc. Al adherirse a los convenios del patrón LINQ, tales implementaciones gozarán de la misma integración en los lenguajes y soporte de herramientas que los operadores de consulta estándar.



La extensibilidad de la arquitectura de consultas es aprovechada por el propio proyecto LINQ para ofrecer implementaciones que operan sobre datos XML y SQL. Los operadores de consulta sobre XML (XLinq) utilizan una facilidad de XML en memoria interna eficiente y fácil de usar para ofrecer funcionalidad XPath/XQuery dentro del lenguaje de programación huésped. Los operadores de consulta sobre datos relacionales (DLinq) se apoyan en la integración de definiciones de esquemas basadas en SQL en el sistema de tipos del CLR. Esta integración ofrece un fuerte control de tipos sobre los datos relacionales, a la vez que mantiene la potencia expresiva del modelo relacional y el rendimiento de la evaluación de las consultas directamente en el almacén de datos subyacente.
edit post