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.
Artículos similares
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.

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.