Linq datetime比较where子句

时间:2014-05-23 14:50:27

标签: c# linq

我有一个包含几个名为Key和Value的列的表。 其中一个键称为RequestedOn,值为保存为字符串的时间戳。

现在在我的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.Value(字符串)与startDate或endDate进行比较,我无法将ep.Value转换为DateTime,因为它没有意义。关于解决方案的任何想法?

提前致谢?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你可以:

  • 将DateTime转换为字符串
  • 将字符串转换为DateTime
  • 编写一个直接比较2的方法
  • 其他东西

答案 2 :(得分:0)

将LINQ用于没有类型且包含不同数据的内容不是一个好选择。 LINQ的重点是要有类型。

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

当然,你关心的是时区和夏令时,你可以保证错误。

答案 3 :(得分:0)

如果您保存正确的字符串,您实际上可以进行比较:

例如:&#39; 20131201125959&#39;:年,月,日,小时,分钟,秒。