- Language Integrated Query
-
Language Integrated Query (LINQ) es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET, inicialmente a los lenguajes Visual Basic .NET y C#. Muchos conceptos que LINQ ha introducido fueron originalmente probados en Cω, un proyecto de investigación de Microsoft.
LINQ define operadores de consulta estándar que permiten a lenguajes habilitados con LINQ filtrar, enumerar y crear proyecciones de varios tipos de colecciones usando la misma sintaxis. Tales colecciones pueden incluir vectores (arrays), clases enumerables, XML, conjuntos de datos desde bases de datos relacionales y orígenes de datos de terceros. El proyecto LINQ usa características de la versión 2.0 del .NET Framework, nuevos ensamblados relacionados con LINQ, y extensiones para los lenguajes C# y Visual Basic .NET. Microsoft ha distribuido una versión previa del LINQ, consistente de estas bibliotecas y compiladores para C# 3.0 y Visual Basic 9. Otros lenguajes, como F# y Nemerle, han anunciado brindar soporte preliminar.
El objetivo de crear LINQ es permitir que todo el código hecho en Visual Studio (incluidas las llamadas a bases de datos, datasets, XMLs) sean también orientados a objetos. Antes de LINQ, la manipulación de datos externos tenía un concepto más estructurado que orientado a objetos. Además LINQ trata de facilitar y estandarizar el acceso a dichos objetos.
Contenido
Características del lenguaje
LINQ usa varias características nuevas para permitir a lenguajes como C# el uso de la sintaxis de consultas nativas:
- Tipos anónimos
- Métodos extensores
- Expresiones lambda
- Árboles de expresión
- Operadores de consulta estándar
Orígenes de datos
Aunque LINQ soporta inicialmente consultas en colecciones en memoria, bases de datos relacionales y datos XML, es una arquitectura extensible que permite a desarrolladores de orígenes de datos adicionales el uso del LINQ, implementando los operadores de consulta estándar como métodos extensores para sus orígenes de datos, o mediante la implementación de la interfaz IQueryable que permite convertir un árbol de expresión en tiempo de ejecución para transformarlo en algún lenguaje de consultas. Los operadores de consulta estándar son usados para objetos también y permiten consultar objetos en la memoria con la misma sintaxis LINQ.
SQLMetal
El framework LINQ incluye una herramienta llamada SQLMetal que permite la generación automática de clases directamente de una base de datos MS-SQL, permitiendo la integración de código y la base de datos fácil y rápidamente.
Esta generación de clases es totalmente visual. Lo único que se necesita es arrastrar las tablas de la base de datos en el código generado para realizar la llamada de las clases. El paso dos es llamar a la función context para obtener los datos de la clase.
Ejemplo
// El tipo Northwind es una subclase de DataContext creada por SQLMetal // Northwind.Orders es de tipo Table<Order> // Northwind.Customers es de tipo Table<Customer> Northwind db = new Northwind(connectionString); // Se usa la palabra reservada 'var' porque no hay nombre para el tipo resultante de la proyección var q = from o in db.Orders, c in db.Customers where o.Quality == "200" && (o.CustomerID == c.CustomerID) select new { o.DueDate, c.CompanyName, c.ItemID, c.ItemName }; // q es ahora un IEnumerable<T>, donde T es un tipo anónimo generado por el compilador foreach (var t in q) { // t está fuertemente tipado, incluso si no podemos nombrar el tipo en tiempo de diseño Console.WriteLine("Tipo de dato de DueDate= {0}", t.DueDate.GetType()); Console.WriteLine("CompanyName (en minúsculas) = {0}", t.CompanyName.ToLower()); Console.WriteLine("ItemID * 2 = {0}", t.ItemID * 2); }
Enlaces externos
Categorías:- Lenguajes de consulta
- Interfaces de programación de aplicaciones de Microsoft
Wikimedia foundation. 2010.