Tecnologías Microsoft

Web Development

Introducción a LINQ

 En los últimos años ha aumentado la tecnología todo gracias a sistemas inteligentes y la evolución de los lenguajes de programación orientada a objetos. Esto quiere decir que la mayoría de los programadores ya estan familiarizados con los conceptos como clases, objetos,metodos, etc. Microsoft se enfoco en esta gran ventaja y propuso que es un reto poder reducir la complejidad del acceso a la información. Hemos venido utilizando tecnologías para poder tener acceso a nuestra información, los cuales son las bases de datos relacionales y XML.

Microsoft crea un proyecto llamado LINQ (Lenguaje Integrado de Consultas)”Language Integrated Query” en donde el enfoque general es facilitar las consultas a fuentes de información y no solo a los datos relacionales o XML, si no que esta vez  orientado a objetos.

Estas consultas integradas en los lenguajes .NET  (Vb,C#) van a definir un conjunto de operadores de consulta estandar el cual nos permiten hacer operaciones de recorrido, filtro y proyecciones en los datos o información que estemos manejando. 

¿Cuales son estos operadores de Consulta?

Si checamos el siguiente programa, en donde utilizamos un array de nombres y determinamos mediante una enumeración la consulta que queremos realizar, que sería saber todos los nombres que empiezen con la letra E. Tenemos que nuestros operadores serian :  from, where, orderby,select.

using System;
using System.Linq;
using System.Collections.Generic;
 
class ejemplo1

 

{
static void Main()
{ 
  string[] _nombres = { "Edison", "Daniel", "Edgar","Esperanza", "Alberto", "Jorge","Omar", "David" };

  IEnumerable<string> expresion = from nom in _nombres
                                  where nom.StartsWith("E")
                                  orderby nom
                                  select nom;
  
 foreach (string elemento in expresion)
Console.WriteLine(elemento);
Console.ReadLine();
} 
}

¿Cuales  son las características principales de LINQ?
 LINQ está construido enteramente sobre características de los lenguajes de propósito general, algunas de las cuales son nuevas en C# 3.0 y Visual Basic 9.0.

  •   Expresiones lambda y árboles de expresión

     Las expresiones lambda ofrecen a los desarrolladores una manera conveniente para poder escribir funciones que puedan ser pasadas como argumentos, hagamos de cuenta que las expresiones lambda son similares a los delegados del CLR.

     

    Retomando el mismo ejemplo anterior agregaremos expresiones lambda:
using System;
using System.Linq;
using System.Collections.Generic;

 

class ejemplo1

{
static void Main() { 
  
string[] _nombres = { "Edison", "Daniel", "Edgar","Esperanza", "Alberto", "Jorge","Omar","David" };
  
Func<string, bool> condicion = nom => nom.StartsWith("E");

Func<string, string> orden = nom => nom;

Func<string, string> seleccion = nom => nom;

IEnumerable<string> expresion = _nombres.Where(condicion)

                                     .OrderBy(orden)

                                     .Select(seleccion);

 
foreach (string elemento in expresion)
Console.WriteLine(elemento);

Console.ReadLine(); }
}

    Checamos que las expresiones lambda tienen la ventaja de ofrecernos una sintaxis más directa y compacta para la escritura.

¿De qué se compone el proyecto de LINQ?

linq00

Podemos checar que el Proyecto LINQ se compone de C# 3.0, VB 9.0 y se aplica para Objetos, Base de datos Relacionales, XML.

Checaremos más ejemplos:

En este ejemplo lo que hacemos es tener un arreglo de tipo string en donde almaceno cierta cantidad de frutas y mi consulta se almacenara en un grupo de Frutas en donde clasificará a las frutas por la primera letra.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static void Main(string[] args){

 

 
string[] frutas = { "manzana", "pera", "sandia", "papaya", "piña", "mango","limon","guayaba","naranja" };
 

 var grupoFrutas = from f in frutas

                   

group f by f[0] into g
                    select new { PrimeraLetra = g.Key, frutas = g };

 

foreach (var g in grupoFrutas){

  
Console.WriteLine("Las frutas que empiezan con la letra '{0}':", g.PrimeraLetra);

           
 foreach (var f in g.frutas){

                  
Console.WriteLine(f);     
     }  
 }   
Console.ReadLine();  
 }  
}

 

 

 Puedes checar más sobre LINQ con estos links:

LINQ Project. - http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx

101 Ejemplos .- http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx

 

 

Posted: 21/12/2007 17:42 por Edison Daniel García | con 2 comment(s) |
Archivado en:
Comparte este post:

Comentarios

nor ha opinado:

en hora buena mi estimado edison, felicidades por la nueva chamba ak en geeks, a ver si luego invitas a postear.

sobre el articulo de intro muy bien, nos escribimos luego

# December 22, 2007 11:28 PM

Rubén Mugártegui - Microsoft ha opinado:

Excelente trabajo Edision, te felicito por la gran habilidad de síntesis y forma de entregar contenido de calidad. No por nada estás calificado como de los mejores socios de Microsoft.

Saludos, un gran abrazo.

# January 1, 2008 6:22 PM