0

我有一个包含 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。我不需要按时间查询,我只需要按日期查询。任何帮助appriciated。

4

3 回答 3

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 { ---})
于 2013-05-14T11:46:08.793 回答
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

于 2013-05-14T11:23:07.640 回答
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 { ---}
于 2013-05-14T11:48:16.233 回答