sábado, 26 de mayo de 2012

LINQ to Entities - Sintaxis

Una consulta es una expresión que recupera datos de una base de datos.

Las consultas se suelen expresar en un lenguaje de consulta especializada, como SQL para bases de datos relacionales y XQuery para XML. Por lo que, los desarrolladores han tenido que aprender un nuevo lenguaje de consulta para cada tipo de datos de formato de la fuente o los datos que se consulta.


Language-Integrated Query (LINQ) ofrece un simple, modelo coherente para trabajar con datos a través de varios tipos de fuentes de datos y formatos. En una consulta LINQ, siempre se trabaja con objetos de programación.

Sintaxis de Consultas

La sintaxis permite de linq permite a los desarrolladores escribir consultas en un lenguaje de alto nivel que tiene el formato similar a Transact-SQL. Mediante el uso de la sintaxis de las expresiones de consulta, se puede realizar el filtros, ordenar y agrupar las operaciones en las fuentes de datos con código mínimo.


Ejemplos a desarrollar:

  • Consulta sencilla ( from , select)
  • Filtros ( where )
  • Ordenando ( Order by)
  • Particionando (Skip , Take, top n)
  • Operadores (Count , sum , average )
Siempre debemos instanciar el contexto para poder realizar nuestras consultas.

Northwind db = new Northwind()

Consulta  Sencilla

El metodo from nos indica de que tabla obtendremos la información y select nos indica que campos de esa tabla.


Obteniendo todos los campos de una tabla
var query = from p in db.Products
            select p;

Obteniendo un solo campo
IQueryable<string> productNames =
        from p in db.Products
        select p.Name;

Obteniendo algunos campos

 var query =
        from p in db.Products
        select new
        {
            Id = p.ProductID,
            Nombre = p.Name
        };

Filtros ( where )

La cláusula where filtra la información.
var query =
        from product in db.Products
        where product.categoryid == id
        select new
        {
            Nombre = p.Name,
            precio = p.unitprice,
            codigo = p.productid
        };



Ordenando (orderby y orderbyDescending)

La cláusula orderby y OrderbyDescending nos proporcionan la capacidad de ordernar el conjunto de resultados. 
var query = from p in db.Products
orderby p.unitprice
select p;

var query = from p in db.Products
orderby p.unitprice descending
select p;

var query = from p in db.Products
orderby p.unitprice, p.name descending
select p;



Particionando (Skip, Take)

La clausula Skip muestra todos los datos, excepto los 2 primero.
La clausula Take muestra solo los primero 2 registros.


Skip  
var query =
        (from p in db.Products
        select new
        {
            Id = p.ProductID,
            Nombre = p.Name
        }).Skip(2);
Take 

var query = (from p in db.Products 
select new
{
                 Id = p.ProductID,
                 Nombre = p.Name
                }).Take(2);

Fuentes del articulo:

http://msdn.microsoft.com/en-us/library/bb399367.aspx

No hay comentarios.: