Saltar al contenido

Consultas en c# usando Linq

by en 16 enero, 2012

Hola a todos,

Hace mucho tiempo no me pasaba por mi amado blog a escribir una nueva entrada.

Hace algún tiempo les presenté como ordenar un determinado item usando Listas genéricas y .sort() / orderBy(). También les he mostrado como encontrar un determinado control usando Linq. Hoy les vengo a mostrar ya Linq puro, realizar consultas directas en el código c# para realizar filtros, realizar operaciones o bien ordenar las un pool de datos.

comenzaré explicando primero que todo, lo básico, esto puesto que en las dos entradas mencionadas en el párrafo anterior no tienen mucha información al respecto…

¿Qué es 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 lenguajesVisual Basic .NET y C#.», Wikipedia.

No puedo decir mucho más de lo que está expuesto en el párrafo anterior 😛

¿A qué es aplicable Linq?

  • Linq es aplicable para realizar consultas directas a objetos Linq To SQL, en el que se realiza la consulta «sql» directo en código c# o VB.
  • Linq es aplicable también para filtrar, ordenar o procesar objetos en listas genéricas y arreglos.

Linq ha demostrado ser una herramienta flexible, robusta y elegante para resolver de manera sencilla problemas que antes tardaban mucho tiempo y líneas de código. Hoy en día, gracias a esta tecnología, los programadores pueden pasar más tiempo con sus familias 😀

¿Es Linq To SQL más eficiente que realizar consultas en el motor de base de datos?

¡NO!

Nada es más eficiente que crear una consulta bien hecha directo en el motor.

Si es más rápida su implementación 🙂

¿Es Linq más eficiente que utilizar filtros y órdenes tradicionales en base a if/while/for?

No lo sé, a decir verdad el rendimiento se ve bastante similar. Nunca he tenido problemas procesando listas de 1000 filas aprox… Más que eso quizás debería considerar solicitar al motor de base de datos un espectro más acotado… Insisto sin embargo que yo como ser humano, no noto la diferencia en performance, si la noto (y mucho) en tiempos de desarrollo. Ordenar, filtrar o procesar una lista/arreglo en 4 líneas de código: ¡No tiene precio!

Ejemplo sencillo:

Ejemplo:

Definimos un objeto:

public class HorasDeclaradas
{
  public string Name { get; set; }
  public DateTime Day { get; set; }
  public double Hours { get; set; }
}

Supongamos tenemos una lista genérica con objetos de HorasDeclaradas y necesitamos saber cuántas horas declaró la persona el día de ayer

List<HorasDeclaradas> lista = GetUnMontonDeDatos();
double hhAyer = (from HorasDeclaradas h in lista
where h.Day == DateTime.Now.AddDays(-1)
select h.Hours).Sum();

Simple y sencillo 😀

Más ejemplos y ejercicios:

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

Referencias:

http://es.wikipedia.org/wiki/Language_Integrated_Query

http://msdn.microsoft.com/es-es/library/bb386976.aspx

Deja un comentario

Deja un comentario