I Love linq to objects

Agosto 21, 2008 :: Posted by - Emilio Torrens :: Category -

Estamos súper liados con proyectos nuevos, de ultima hora y para anteayer, así que nos queda poco tiempo para escribir … pero hace mucho tiempo que tengo pendiente este POST, así que ..

Estoy empezando a usar linq to objects para trabajar con mis colecciones de objetos y la verdad es que es alucinante, se simplifica tanto el código, tenéis que probarlo, engancha …

Voy a dejar unos ejemplos de código que estoy usando en los proyectos en marcha.

Aquí tenia un método que tenia que buscar en mi colección por unos valores y si no encontraba esos valores buscar por el mas cercano superior, eso en LINQ se queda en esta línea:

var t = from t1 in Lista
where
1.CodigoHabitacionLineaTarifaCliente == CodHabitacion
&&
t1.CodigoRegimenLineaTarifaCliente == CodigoRegimen
&&
t1.CodigoTarifaLineaTarifaCliene == CodigoTarifa
&&
t1.AdultosLineaTarifaCliente >= AD
&&
t1.NinosLineaTarifaCliente >= CH
&&
t1.CunasLineaTarifaCliente >= EN
orderby
t1.AdultosLineaTarifaCliente,
t1.NinosLineaTarifaCliente,
t1.CunasLineaTarifaCliente ascending
select t1;

Aquí una búsqueda normal de toda la vida

var t = from t1 in Lista
where
t1.CodigoHabitacionLineaTarifaCliente == CodHabitacion
&&
t1.CodigoRegimenLineaTarifaCliente == CodigoRegimen
&&
t1.CodigoTarifaLineaTarifaCliene == CodigoTarifa
select t1;
if (t.Count() == 0)
  throw new Exception(NDatos);

Y lo mejor, usar sum y group by en nuestras colecciones,

aqui agrupando y sumando precios x día

var GroupedPrices = from pd in b.PriceDetails group pd by pd.Day into g
select new {Day = g.Key, TotalPriceDay = g.Sum(v1 => v1.Amount)};

Cuando empeceis a usarlo no podreis vivir sin el :)

Clone Detective

Agosto 01, 2008 :: Posted by - Emilio Torrens :: Category -

Clone Detective , es un addin de VS que nos ayuda a detectar donde estamos repitiendo código, porque estamos copiándolo o porque olvidamos que ya lo tenemos hecho en algún sitio.

Esta versión solo funciona en C#, podéis ver algunos videos en la web del proyecto en Codeplex.