使用LINQ或者是Entiry Framework的時候,我們希望可以下兩個起迄日期欄位,然後取得這兩個日期欄位之間的資料,我們也都知道LINQ並沒有between這個我們熟悉的SQL語法可用,然後再加上日期格式,嘿..好像還好,但是也夠我們想好一會兒了。
下面我們舉出實際的例子,透過Entity Framework去查詢出2010/05/07到2010/05/10這兩日期間的資料。當然下面程式中ClickDate這個欄位在表格TrackStatistic中是日期型態欄位,當然我們須進行下面兩個檢查,但這裡主要是說明LINQ中表達方式,檢查資料方式就暫不討論了。
1.先判斷這兩個查詢的日期欄位是符合日期格式(must datetime format)。
2.起日(start date) <= 迄日(end date)。
1.先判斷這兩個查詢的日期欄位是符合日期格式(must datetime format)。
2.起日(start date) <= 迄日(end date)。
檢查完資料,在將参數帶入LINQ查詢語法之前,我們須將迄日(end date)加上1天,這樣查詢可精準的抓到小於及等於迄日的資料。如下舉在MVC2中Show()這個Action希望取出兩個日期間的資料:
1: public ActionResult Show()
2: {
3: DateTime sd = Convert.ToDateTime("2010/05/07");
4: DateTime ed = Convert.ToDateTime("2010/05/10").AddDays(1);
5: TESTDBEntities _db = new TESTDBEntities();
6: var showToView = _db.TrackStatistic.Where(
7: m => m.ClickDate >= sd && m.ClickDate <= ed);
8: return View(showToView);
9: }
上面這段LINQ查詢後可精準的抓出兩個日期間的資料,而且entity framework會自動只比對日期欄位的年月日,查詢後資料如下圖所示:
m => m.ClickDate >= sd && m.ClickDate <= ed);
回覆刪除不應該要=,只要小於就好
m.ClickDate < ed
m.ClickDate < ed 少了 =
刪除會少撈ed的資料喔