Ayuda con linq y la fecha

2,531 views
Skip to first unread message

nesto...@gmail.com

unread,
Oct 29, 2012, 1:31:31 PM10/29/12
to altnet-...@googlegroups.com

Que tal amigos de altnet-hispano

 

Aquí estoy peleándome con linq y las fechas y hasta ahora no logro resolver un simple igual con las fechas.

Algo así como

 

Select *

From marcas m

Where date_trunc(‘day’,m.fec_marca) = date_trunc(‘day’,date(‘today’);

 

Es decir que la fecha de marca sea igual a la fecha de hoy.

 

Le coloco de esta manera

var marcasHoy = (from m in db.Marcas

                                 where m.fec_marca.Date.ToString() == DateTime.Today.ToString()

                                 select new

                                 {

                                     Nombre = m.Funcionario.Persona.Nombre + " " + m.Funcionario.Persona.Apellido,

                                     Evento = m.Evento.Nombre,

                                     TipoMarca = m.TipoMarca.TipoMarca1

                                 }).ToList();

Y me da error por que no soporta ToString()

Lo coloco de esta manera

var marcasHoy = (from m in db.Marcas

                                 where m.fec_marca.Date == DateTime.Today.Date

                                 select new

                                 {

                                     Nombre = m.Funcionario.Persona.Nombre + " " + m.Funcionario.Persona.Apellido,

                                     Evento = m.Evento.Nombre,

                                     TipoMarca = m.TipoMarca.TipoMarca1

                                 }).ToList();

Y me dice:  “El miembro de tipo especificado 'Date' no se admite en LINQ to Entities. Sólo se admiten inicializadores, miembros de entidades y propiedades de navegación de entidades.

 

Alguien me puede dar un ejemplo funcionando de como puedo igualar el campo fec_marca con la la fecha hoy?

Desde ya gracias.

 

 

Juan Nallar

unread,
Oct 29, 2012, 1:42:09 PM10/29/12
to altnet-...@googlegroups.com
Sin probar lo que te digo:
1) Podes usar "equals" en vez de "=="
2) Es posible que LINQ no pueda convertir "DateTime.Today.Date" a una expresión SQL. Probá asignarla a una variable afuera de la sentencia, y luego usar esa variable.
 
Contame como te va.

2012/10/29 <nesto...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

Alpha

unread,
Oct 29, 2012, 1:43:21 PM10/29/12
to altnet-...@googlegroups.com
Si m.fec_marca ya es una fecha, no haría falta que uses su propiedad Date.

No serviría usar m.fec_marca == DateTime.Today?

Alpha.-


2012/10/29 Juan Nallar <nalla...@gmail.com>

nesto...@gmail.com

unread,
Oct 29, 2012, 1:54:56 PM10/29/12
to altnet-...@googlegroups.com

Lo que pasa es que m.fec_marca es un DateTime.

No existe una función que trunque la fecha y quitar la hora?, algo como date_trunc(‘day’,fec_marca).

 

Atte.

Nestor

Alpha

unread,
Oct 29, 2012, 1:59:13 PM10/29/12
to altnet-...@googlegroups.com
Es verdad, en ese caso es correcto que uses .Date, ya que es la propiedad que correctamente te devuelve lo que necesitás.

Dada la limitación de LinQ to Entities, lo que recomiendan aquí es comparar directamente los componentes Year, Day y Month. (Qué feo que haya que hacer esas cosas.)

Alpha.-


2012/10/29 <nesto...@gmail.com>

nesto...@gmail.com

unread,
Oct 29, 2012, 2:40:28 PM10/29/12
to altnet-...@googlegroups.com

Gracias, me salió, pero de la siguiente manera:

from m in db.Marcas

   where EntityFunctions.TruncateTime(m.fec_marca) == DateTime.Today

 

Según el enlace que me enviaste. Perfecto!!

Gracias de nuevo.

 

Atte.

Néstor

Marcos Mellibovsky

unread,
Oct 29, 2012, 3:15:52 PM10/29/12
to altnet-...@googlegroups.com
te conviene hacer por m.fec_marca >= datetiem.todat && m.fec_marca < datetime.today.AddDays(1) porque al aplicar una operacion sobre una columna hace que no se pueda usar un indice por dicha columna y tenga que barrer toda la tabla.



2012/10/29 <nesto...@gmail.com>



--

Ing. Marcos Mellibovsky
ARSoft Consultoría Informática
mel...@arsoft.com.ar
0351 155630801
msn:mellibov...@hotmail.com

nesto...@gmail.com

unread,
Oct 29, 2012, 4:37:33 PM10/29/12
to altnet-...@googlegroups.com

Gracias voy a tenerlo en cuenta.

Atte.

Nestor

Eugenio Pace

unread,
Oct 29, 2012, 4:41:44 PM10/29/12
to altnet-...@googlegroups.com
Adicionalmente ten presente que "EntityFunctions" solo funciona contra una base de datos. No funciona con "objects".
eugenio
2012/10/29 <nesto...@gmail.com>
Reply all
Reply to author
Forward
0 new messages