Linq datetime比较where子句

本文关键字:子句 where 比较 datetime Linq | 更新日期: 2023-09-27 18:04:53

我有一个表,其中有一对列,称为键和值。其中一个键名为requestdon,其值是保存为字符串的时间戳。

现在在我的linq查询中,我想比较这个时间戳,例如

var startDate = DateTime.Now.AddDays(-7);
var endDate = DateTime.Now;
var query = (from ep in db.ExtendedProperties
            where
                ep.Key == "RequestedOn" && ep.Value >= startDate && ep.Value <= endDate
            select ep).ToList();

现在我知道我不能比较ep。值(字符串)对startDate或endDate,我不能转换ep。值赋给DateTime,因为它没有意义。有什么解决办法吗?

提前谢谢?

Linq datetime比较where子句

如果保存为字符串,则必须将其解析为DateTime,然后比较

您可以:

  • 将日期时间转换为字符串
  • 将字符串转换为日期时间
  • 写一个方法直接比较
  • 别的

对于没有类型且包含不同数据的内容使用LINQ不是一个好的选择。LINQ的全部意义就在于拥有类型。

也就是说,你的问题的一个解决方案是将日期保存为与字符串类似的格式,如201405231801(23.05.2014 18:01),并只是比较字符串。

当然你关心时区和夏令时,你肯定会出错。

如果你正确保存你的字符串你实际上可以做一个比较:

例如:'20131201125959':年、月、日、时、分、秒。