Home :: Web :: net :: Qué es LINQ
 
LINQ

Qué es LINQ

abr 12, 2010 en net,Productividad por Victor Parasi

Desde ya hace unos años, ha evolucionado la forma que un programador hace sus consultas o trabaja con un origen de datos. Se ha buscado mezclar, de alguna forma, el lenguaje SQL con C# y en general otros que soporta la tecnología .Net. Lee este post y entérate de que se trata.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Antes de empezar a definir qué es LINQ, veamos que es una consulta. Una consulta es la expresión o método que debemos realizar para extraer información de un origen de datos.

Con la llegada de Visual Studio 2008 y la evolución que ha tenido el lenguaje C#, se ha introducido un nuevo concepto que, dicho en castellano, consiste en mezclar el lenguaje para hacer consultas en MS SQL, con nuestro lenguaje C# y en general con los lenguajes soportados por el .Net Framework.

Entonces LINQ es casi, casi un nuevo lenguaje?, te puedo decir que NO, LINQ mas que un nuevo lenguaje, es un modelo de codificación que va a permitirnos realizar mejores consultas sobre la información. Nos permitirá filtrar, enumerar y crear proyecciones sobre varios tipos de colecciones (siempre y cuando implementen la interfaz IEnumerable o IEnumerable(T)), bases de datos y archivos XML, todos ello bajo una misma sintaxis y trabajando siempre con Objetos.

Aunque no lo creas esto es una gran ayuda porque antes de LINQ debíamos hacer consultas, en formas distintas, dependiendo del origen de datos. A partir de la aparición de LINQ, como programadores, lo que hemos que ganamos es, sin importar el origen de datos, poder realizar las consultas siempre de la misma forma.

LINQ, trabaja con : Archivos XML, Bases de Datos y con Colecciones, veamos un ejemplo de LINQ, haciendo una consulta sobre un Vector.

	//Definimos nuestra fuente de datos
        int[]  Vector= new int [20]{1,2,3,4,5,6,7,8,9,10,11,
                                    12,13,14,15,16,17,18,19,20};

        //Método que retorna los datos filtrados en un Vector de Enteros
        public int[] ObtenerNumeroPares()
        {
           //APLICACION DE LINQ PARA LA CONSULTA

            //Realizamos nuestra consulta
            var Consulta =
            // Cada elemento del Origen de Datos
            from item in Vector
            //Indicamos el filtro a aplicar sobre los datos
            where (item % 2) == 0
            //Ejecutamos la consulta
            select item; 

           //Retornamos la información como Vector del tipo Entero
            return Consulta.ToArray() ;

        }
        //Método que retorna la suma de los datos filtrados por la consulta
        public int Sumar_Numero_Pares()
        {
           //APLICACION DE LINQ PARA LA CONSULTA

            //Realizamos nuestra consulta
            var Consulta =
            // Cada elemento del Origen de Datos
            from item in Vector
            //Indicamos el filtro a aplicar sobre los datos
            where (item % 2) == 0
            //Ejecutamos la consulta
            select item; 

	    int Suma = 0;

	    //La información filtrada esta en Consulta
            //Por lo que podemos recorrer los items alli contenidos
	    foreach (int i in Consulta)
                Suma+=i;
            return Suma;
        }

En el ejemplo anterior, he tratado de colocar un ejemplo donde podamos ver como se realizan las consultas utilizando LINQ, y además como manejar la información obtenida luego de realizada la consulta.

Para realizar la consulta, por el código que he colocado, puedes deducir lo siguiente:

  • El primer requisito para utilizar LINQ es tener bien definido el Origen de los Datos y sobre todo haber recopilado la información de este Origen de Datos
  • El segundo paso es realizar la consulta, esto incluye la definición del filtro a aplicar para cada uno de los datos.
  • Por último debemos de ejecutar la consulta, para que el proceso se lleve a cabo.

Siguiendo estos pasos, podemos trabajar sin ningún problema con LINQ, por lo que voy a colocar algunos ejemplos para que te orientes.

Veamos como trabajar LINQ con datos del tipo String.

 //Definimos nuestra fuente de datos
        List<String>  Departamentos= new List<String>
			{"Lima","Cuzco","Arequipa","Huanuco",
 			"Puno","Loreto","Pasco",
 			"Moquegua","La Libertad","Tumbes"};

        public List<String>Departamentos_inician_con_L()
        {
            //Realizamos nuestra consulta
            var Consulta =
            // Cada elemento de la Origen de Datos
            from item in Departamentos
            //Indicamos el filtro a aplicar sobre los datos
            //Que empiece con "L"
            where (item.StartsWith("L"))
            //Y si deseamos podemos ordenar los datos obtenidos
            orderby  item
            //Ejecutamos la consulta
            select item;
            //Retornamos la información como una Lista del tipo String
            return Consulta.ToList() ;

        }
       

Ahora veamos como hacer una unión de Datos mediante una consulta.

//Definimos nuestra fuente de datos
        List<String>  Departamentos= new List<String>
				{"Lima","Cuzco","Arequipa","Huanuco","Puno",
                                 "Loreto","Pasco","Moquegua","La Libertad",
                                 "Tumbes"};
        List<Int64> Anio_Fundacion = new List<Int64>
			{1535,1200,1540,1532,1660,1720,1850,1820,1920,1930};

        public void Uniendo_Informacion()
        {
            //Realizamos nuestra consulta
            var Consulta =
            // Sobre cada elemento de cada Origen de Datos
            from dpto in Departamentos
            from anio in Anio_Fundacion
            //ordenamos por el nombre del departamento
            orderby dpto
            //Juntamos los datos de la consulta
            select new { dpto,anio};
            //Recorremos la informacion
            foreach (var v in Consulta)
                Console.WriteLine("{0}  - {1} ", v.dpto, v.anio);
        }
       

Recuerda que LINQ, sirve para hacer consultas, por lo que también se puede aplicar para :

Calcular cuantos elementos cumplen con una determinada condición

List<Int64> Anio_Fundacion = new List<Int64>
                       {1535,1200,1540,1532,1660,1720,
                        1850,1820,1920,1930};

        public void Anio_Funcion_Entre_1500_y_1600()
        {
            //Vamos a contar los elementos (x) que cumplen
            //con la condición indicada
            int Cantidad = Anio_Fundacion.Count(x => (x > 1500 && x<1600));

            Console.WriteLine("{0}", Cantidad );
        }
       

Calcular el promedio de un conjunto de datos

 List<Int32> Datos = new List<Int32>{150,170,180,112,1555,114,112,100,190,191};

        public void Calcular_Promedio()
        {
            //Vamos a Calcular el promedio de todos los elementos (x)
            double Promedio = Datos.Average(x => x);

            Console.WriteLine("{0}", Promedio);
        }

En este post, he tratado de indicarte que es LINQ, así como indicarte lo poderoso que resulta al momento de trabajar con los datos, haciendo consultas y realizando cálculos rápidamente. Espero que te sea útil este artículo y cambie tu forma de programar.


Autor: Victor Parasi

Siempre es difícil escribir sobre uno mismo, qué contar, o por donde empezar, suele ser todo un dilema al momento de presentarse. Aquí vamos. Les diré que soy peruano, Ingeniero por vocación, dedicado a la docencia y siempre en la búsqueda de programar cada vez mejor. Aunque a veces algo terco, sé que no todo en la vida es blanco o negro. Existe el Open Source, y lo respeto pero me llevo mejor con el .Net. Si me hablas de preferencias, te digo que C#, C++, una buena película, colores oscuros, escribir, leer e investigar. Para terminar les diré que amo muchísimo a una mujer espectacular y que es la dueña de mi corazón.


Comentarios (1)

Wilson Ademir Aragon Alvarez dice:

Saludos, tengo una consulta:
Puedo usar LINQ para hacer consultas una Base de Datos creado en SQL Server?
Mas o menos como seria ese proceso?

Gracias por esta gran pagina que es muy util especialmente para estudiantes como yo.

Deja un comentario

   

copstone en Facebook

Otros artículos

Alguna vez te haz preguntado cómo hace una función como por ejemplo el printf para recibir una cantidad de parámetros indefinida? En este artículo te voy a enseñar a escribir funciones que no necesiten una cantidad definida de parámetros.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

En el artículo de SOA, vimos que en la actualidad lo importante no es sólo que tu aplicación funcione bien, sino que funcione acoplada al entorno sobre el cual será puesto en producción,comunicándose con las aplicaciones existentes y futuras mediante un concepto llamado Servicios. En este artículo veremos como implementar un Servicio mediante WCF de Microsoft.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Sabías que puedes configurar tu aplicación con sólo cambiar unos valores y sin necesidad de estar ejecutándola constantemente?. Te dejo este post para que aprendas lo fácil que es y sobre todo lo útil que puede resultarte.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

En este artículo te muestro como simular el teclado en Windows, es decir, cómo hacer que un programa escriba en el teclado por nosotros. No te imaginas lo útil que puede ser este conocimiento así que te recomiendo que le des una leída.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Si navegas mucho por la web te puedes dar cuenta que muchas páginas ofrecen interfaces web atractivas, con animaciones y muchas peticiones AJAX para no necesitar refrescar las páginas. Si te interesa implementar este tipo de funcionalidad en tus páginas, la mejor forma es utilizando una librería como por ejemplo jQuery. En este artículo te voy a enseñar lo básico de jQuery y te voy a mostrar unos cuantos ejemplos como este: Haz clic aquí.

FacebookGoogle BookmarksGoogle GmailTwitterYahoo MailHotmailLinkedInShare

Calendario

abril 2010
L M X J V S D
« mar   may »
 1234
567891011
12131415161718
19202122232425
2627282930  

Categorías

Comparte este artículo

  • Facebook
  • Google Bookmarks
  • Google Gmail
  • Twitter
  • Yahoo Mail
  • Hotmail
  • LinkedIn
  • Share
TIENES ALGO QUE PREGUNTAR? ESCRÍBENOS AQUÍ

Copyright © 2012 - Programando por diversion

Subir