LINQ To Entities中的日期不同?

时间:2009-07-15 20:59:56

标签: 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 

我想要这样的东西?

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

但我没有格式化日期列以应用DISTINCT

2 个答案:

答案 0 :(得分:2)

问题是你在这里的日期列上应用distinct而不是匿名类型 - 这将永远不会起作用,因为该类型没有相等概念,因为它尚未为此类型定义。

答案 1 :(得分:0)

您可以创建一个IEqualityComparer来使质量基于日期的独特工作。如果是我,我可以尝试更基本的东西,比如:

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

基本上,您必须向匿名类型添加一个属性,该属性存储该日期的日期,组,然后返回每个组中的第一个元素。