2013-05-14 176 views
0

我有一個DataTable,包含5個類型爲int,string和DateTime的列。我寫了一個LINQ查詢按日期篩選記錄。我如何在今天和昨天獲得記錄?如何根據日期查詢記錄

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") == DateTime.Now.Date) 
      .Select(datas => new { ---}) 

我沒有收到記錄。我的記錄是在14/05/2013 10:00。我不需要按時間查詢,我只需要按日期查詢。任何幫助appriciated。

回答

0

您使用==將只匹配14/05/2013 12:22(發帖時間)

用途:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date).Select(datas => new { ---}) 

這將讓任何日期12:22前或使用&&並指定其他條件,如:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date && datas.Field("Date") >= '2013-05-14 09:00').Select(datas => new { ---}) 

注意:您也可以使用DateTime.Now.AddHours(-5)而不是硬編碼的2013-05-14

+0

謝謝,明白了 **對於今天:** VAR數據= _dtAll.AsEnumerable()式(DATAS => datas.Field ( 「日期」)> = DateTime.Now.AddDays(-1)&& datas.Field (「Date」)<= DateTime.Now.AddDays(1))。Select(datas => new { - }); **對於昨天:** VAR數據= _dtAll.AsEnumerable()式(DATAS => datas.Field ( 「日期」)> = DateTime.Now.AddDays(-2)&& datas.Field 。 (「Date」)<= DateTime.Now.AddDays(-1))。select(datas => new { - }); – charan 2013-05-14 11:44:47

1

昨天和今天的日期是午夜之間的日期,昨天(含)和午夜明天(不含):

var upperBound = DateTime.Today.AddDays(1); 
var lowerBound = DateTime.Today.AddDays(-1); 

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") < upperBound) 
         && datas.Field<DateTime>("Date") >= lowerBound) 
      .Select(datas => new { ---}) 
0

您是否嘗試過這個?:

var Data = from datas in _dtAll.AsEnumerable() 
     let diff = (DateTime.Now.Date - datas.Field<DateTime>("Date").Date) 
     where diff.Days >= 0 && diff.Days <= 1 
     select new { ---}