从数据表查询以检索基于日期时间的信息
本文关键字:日期 时间 信息 于日期 查询 数据表 检索 | 更新日期: 2023-09-27 18:33:34
我的问题可能有点长,因为我试图解释它背后的背景。
我有一个DataTable
(从数据库中检索),其中包含以下数据:
----------------------------------
- State - Date -
==================================
- on - 02/01/2016 15:38:13 -
----------------------------------
- off - 22/01/2016 16:45:33 -
----------------------------------
- on - 27/01/2016 10:30:16 -
----------------------------------
- off - 01/02/2016 10:03:43 -
----------------------------------
我需要根据日期检查状态。介于两者之间的任何日期都将具有上一个日期的状态。示例:29/01/2016 的状态将为"开"。
我试图从DataTable
中查询:
DateTime test = DateTime.Parse("27 / 01 / 2016"); //temporary part
var queryResults = table.AsEnumerable()
.Where(x => DateTime.Parse(x.Field<string>("Date")).Date == test);
现在,上面的查询返回满足条件的行。如果我将查询中的 where 语句更改为 Where(x => DateTime.Parse(x.Field<string>("Date")).Date <= test);
它将返回前三行。
我的问题是..如果我使用小于或等于查询将测试值更改为 28/01/2016,它仍将返回前三行。我怎样才能只得到最后一个?最后一个状态。
任何帮助都非常感谢:)
使用 .LastOrDefault()
获取集合中的最后一项
var queryResults = table.Where(x => DateTime.Parse(x.Field<string>("Date")).Date <= test).LastOrDefault();
Sid enote:在访问State
属性之前,应检查null
您应该按降序排列,然后获取第一个
queryResults = table.Where(x => DateTime.Parse(x.Field<string>("Date")).Date <= test).OrderByDescending(y=>y.Field<string>("Date")).FirstOrDefault();