我有一个包含5列的DataTable,类型为int,string和DateTime。我编写了一个LINQ查询来按日期过滤记录。我如何在今天和昨天获得记录?
var Data = _dtAll.AsEnumerable()
.Where(datas => datas.Field<DateTime>("Date") == DateTime.Now.Date)
.Select(datas => new { ---})
我没有得到记录。我的记录是2013年5月14日上午10:00。我不需要按时间查询,我只需要按日期查询。任何有用的帮助。
答案 0 :(得分: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 { ---})
答案 1 :(得分: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
答案 2 :(得分: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 { ---}