2009-07-15 8 views
1

Je:dates distinctes dans LINQ To Entities?

select distinct 
     to_date(to_char(i.fe_stax, 'DD/MM/YYYY'), 'DD/MM/YYYY') FechaProg, 
     a.id_ciud, t.no_ciud 
from itinerario i 
where to_date(to_char(i.fe_stax, 'DD/MM/YYYY'), 'DD/MM/YYYY') is not null 

Je veux quelque chose comme ça?

var tmp = (from itin in db.ITINERARIO 
      where itin.FE_STAX != null 
       select new 
       { 
       FechaProg = itin.FE_STAX.Value, 
       IdCiud = itin.EMPRESA_AEROPUERTO.AEROPUERTO.TTCIUD.CO_CIUD, 
       NoCiud = itin.EMPRESA_AEROPUERTO.AEROPUERTO.TTCIUD.NO_CIUD 
       } 
     ).Distinct(); 

mais je ne formate pas la colonne de date pour appliquer DISTINCT

Répondre

2

Le problème est que vous postulez distinctes pas sur une colonne de date ici, mais sur un type anonyme - cela ne fonctionnera jamais que le type n'a pas concept d'égalité car il n'a pas été défini pour ce type.

0

Vous pouvez créer un IEqualityComparer pour effectuer le travail distinct où la qualité est basée uniquement sur la date. Si elle était moi bien, je peux essayer quelque chose d'un peu plus basique, comme par exemple:

var tmp = (from itin in db.ITINERARIO 
      where itin.FE_STAX != null 
      select new 
      { 
       FechaProg = itin.FE_STAX.Value, 
       IdCiud = itin.EMPRESA_AEROPUERTO.AEROPUERTO.TTCIUD.CO_CIUD, 
       NoCiud = itin.EMPRESA_AEROPUERTO.AEROPUERTO.TTCIUD.NO_CIUD, 
       ToDate = itin.to_date 
      } 
).GroupBy(item => item.ToDate).Select(group => group.First()); 

Fondamentalement, vous devez ajouter une propriété à votre type anonyme qui stocke la date, le groupe à cette date, puis renvoie le premier élément de chaque groupe.

Questions connexes