2012-07-17 9 views
5

Tengo una entidad llamada Billings con una propiedad de DateTime. Necesito encontrar las fechas de manera única para poder revisarlas y hacer algunas cosas. me trataron:Fecha distintiva con Linq

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select t.DateTime.Value.Date).Distinct(); 

foreach (var day in DistinctYearMonthsDays) 

pero me da (en la foreach):

El tipo de miembro 'Fecha' especificado no está soportado en LINQ a Entidades. Solo se admiten inicializadores, miembros de entidades y propiedades de navegación de entidades .

Después de buscar también probé el siguiente sin éxito:

IEnumerable<DateTime> DistinctYearMonthsDays = db.Billings 
    .Select(p => new 
     {    
      p.DateTime.Value.Date.Year, 
      p.DateTime.Value.Date.Month, 
      p.DateTime.Value.Date.Day 
     }).Distinct() 
     .ToList() 
     .Select(x => new DateTime(x.Year,x.Month,x.Day)); 

será muy apreciado Cualquier ayuda.

+0

¿Has echado un vistazo a esta página [1]? [1]: http://stackoverflow.com/questions/5289338/linq-query-distinct-date –

Respuesta

8

Puede usar las funciones Entidad integradas. Su consulta se convertiría en:

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select EntityFunctions.TruncateTime(t.DateTime)).Distinct(); 

Para más información sobre EntityFunctions, comprobar MSDN.

+0

Gracias por su pronta (y bien) Jeff respuesta – user1531996

+0

Muchas Gracias! –

Cuestiones relacionadas