Language Integrated Query

De Wikipedia, la enciclopedia libre

(Redirigido desde LINQ)

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 , 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 arreglos, 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.


Contenido

[editar] Características del lenguaje

LINQ usa varias características nuevas para permitir a lenguajes como C# el uso de la sintaxis de consultas nativas:

[editar] 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.

[editar] 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.

[editar] 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);
 }

[editar] Enlaces externos

Herramientas personales