2012-06-29 37 views
1

在我的表TimeTable我有Title,FromDate,ToDate等列,我试图以月为基础获得结果。对于这一点,我试图通过使用实体框架一样,使用EntityFramework获取每月明智的数据

DataObject.Entities entities=new DataObject.Entities(); 

DataObject.TimeTable timeTable  
      = entities.TimeTables.First(t=>t.FromDate.Month<=DateTime.Now.Month 
           && t.ToDate.Month>DateTime.Now.Month) 
{ 
    // 
} 

但是在这里,在t.FromDate.Month其示值误差像<System.DateTime> doesn't contain definition for Month其示值误差......我怎么能解决这个问题,任何人都可以帮助我在这里,

+0

什么都没有fromdate和todate是日期时间 – Boomer

+0

的类型。 ToList将强制执行查询并将表中的所有行加载到内存中,然后过滤 – shanish

回答

2

问题是你使用的是.Net框架和linq的一部分方法无法翻译。为了这个问题处理试过这样

var example = entities.TimeTables.AsEnumerable().Where(
          t=>t.FromDate.Month<=DateTime.Now.Month 
          && t.ToDate.Month>DateTime.Now.Month); 

这可能是工作太

var example = entities.TimeTables.ToList().Where(
          t=>t.FromDate.Month<=DateTime.Now.Month 
          && t.ToDate.Month>DateTime.Now.Month); 

注:第二个将迫使你得到你的表将全部记录进来导致糟糕的表现如果你有太多的行

+0

第二个选项(一个TOLIS()t)的可能不是最优的,如果有时间表很多数据没有fromdate – Satish

+0

好点。让我在我的回答 – Jorge

+0

中加上这个警告,感谢Jorge和Satish,我会试试这个,让你知道 – shanish