De: puntonet@mug.org.ar [mailto:punto...@mug.org.ar] En nombre de Leandro
Tuttini
Enviado el: lunes, 21 de diciembre de 2009 10:08 a.m.
Para: puntonet@mug.org.ar
Asunto: [puntonet] Linq - problema con filtro
hola
Queria agredecer por al ayuda a todo, al final pude solucionar el problema
Efectivamente era un problema con la implementacion del filtro
projectionSubset = (from projection in
ProjectionsService.GetAll()
where ((projection.ProjectionYear > 2009)
|| ((projection.ProjectionYear == 2009)
&& (projection.ProjectionMonth >= 10)))
select projection).ToList<Projection>();
projectionSubset = (from projection in projectionSubset
where (projection.ProjectionYear < 2010)
|| ((projection.ProjectionYear == 2010)
&& (projection.ProjectionMonth <= 10))
select projection).ToList<Projection>();
de esta forma funciona perfecto
muchas gracias
saludos
_____
De: Fernando Rodriguez <ferro...@gmail.com>
Para: puntonet@mug.org.ar
Enviado: jueves, 17 de diciembre, 2009 10:28:03
Asunto: [puntonet] Linq - problema con filtro
En este caso el problema no es linq. El problema esta en la condicion.
Si pedis
(projection.ProjectionYear >= 2009 && projection.ProjectionMonth >= 12)
//llamemos a esto a
|| (projection.ProjectionYear <= 2010 && projection.ProjectionMonth <= 12)
//llamemos a esto b
a devuelve solo el mes 12 de 2009 y años siguientes, ya que no hay ningun
mes mayor a 12....
b devuelve los meses desde el mes 12 de 2010 para abajo --> si no hay
cargados años mayores a 2010 da la sensacion de no filtrar nada
si filtras por a y luego por b, es equivalente a hacer una interseccion:
a interseccion b --> el resultado es: por a los meses 12 del 2009 y años
siguientes. por b, meses anteriores o iguales al 12 de 2010. La interseccion
es el mes 12 del 2009 y 12 de 2010
El 17 de diciembre de 2009 08:45, Leonardo Micheloni
<leonardogabrielmichel...@gmail.com> escribió:
Probaste clavarle un Reflector a ver el delegado que genera?? en una
de esas te da más pistas....bue, yo haría eso :)
2009/12/16 Leandro Tuttini <ltuttini_lis...@yahoo.com.ar>:
> hola
>
> les planteo una situacion algo extraña, que la verdad no entiendo porque
no
> funciona no parece muy compleja la situacion
> resulta que tengo un lista de proyecciones de desembolso de prestamos y la
> idea es filtrar por año-mes de inicio y fin
>
> al principio la idea era ahcer algo como esto:
>
> List<Projection> projectionSubset;
>
> projectionSubset = (from projection in
> ProjectionsService.GetAll()
> where (((projection.ProjectionYear >= 2009)
> && (projection.ProjectionMonth >= 12))
> || ((projection.ProjectionYear <=
> 2010) && (projection.ProjectionMonth <= 12)))
> select projection).ToList<Projection>();
>
> pero note que esto no me filtraba correctamente, es mas no filtraba nada
> directamente
>
> luego intente con esta otra forma
>
> List<Projection> projectionSubset;
>
> projectionSubset = (from projection in
> ProjectionsService.GetAll()
> where (projection.ProjectionYear >= 2009)
> && (projection.ProjectionMonth >= 12)
> select projection).ToList<Projection>();
>
> projectionSubset = (from projection in projectionSubset
> where (projection.ProjectionYear <= 2010)
> && (projection.ProjectionMonth <= 12)
> select projection).ToList<Projection>();
>
> pero resulto que solo devolvia las proyecciones del año 2009 y mes 12
> y la del 2010 año 12 pero solo estos dos meses el resto los descarta
>
> sera un tema que el >= y <= en linq no funciona como deberia ?
> me suena extraño
>
> pero bueno notan que estoy haciando algo incorrecto?
>
> la idea es devolver todas la proyecciones entre estos rango de año-mes
>
> gracias
> saludos
>
> ________________________________
> Encontra las mejores recetas con Yahoo! Cocina.
> http://ar.mujer.yahoo.com/cocina/
_____
Encontra las mejores recetas con Yahoo! Cocina.
http://ar.mujer.yahoo.com/cocina/