2012-06-29 66 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