2009-07-15 13 views
1

ich habe:unterschiedliche Datumsangaben in 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 

ich so etwas wie dies wollen?

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(); 

aber ich formatiert nicht die Datumsspalte DISTINCT anzuwenden

Antwort

2

Das Problem ist, Sie verschiedene anwenden nicht auf einer Datumsspalte hier aber auf einem anonymen Typ - das wird nie funktionieren, wie der Typ nicht hat Konzept der Gleichheit, wie es für diesen Typ nicht definiert wurde.

0

Sie könnten einen IEqualityComparer erstellen, um die verschiedenen Arbeiten zu erledigen, bei denen die Qualität nur auf dem Datum basiert. Wenn es mir aber ist, kann ich etwas mehr einfach, wie so versuchen:

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()); 

Grundsätzlich würden Sie eine Eigenschaft zu Ihrem anonymen Typ hinzufügen müssen, die das Datum speichert, Gruppe zu diesem Zeitpunkt, und dann gebe das erste Element in jeder Gruppe zurück.