C# where子句中的Linq datetime比较

C# where子句中的Linq datetime比较,c#,linq,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 == "Reques

我有一个表,有两列,分别称为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,因为它没有意义。有什么解决办法吗


提前感谢?

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

您可以:

将日期时间转换为字符串 将字符串转换为DateTime 编写一个直接比较2的方法 别的
对没有类型且包含不同数据的内容使用LINQ不是一个好的选择。LINQ的全部要点是拥有类型

也就是说,解决问题的一个方法是将日期保存为可与字符串进行比较的格式,例如201405231801 being 23.05.2014 18:01,然后只比较字符串


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

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


例如:“2013120125959”:年、月、日期、小时、分钟、秒。

为什么转换为日期时间没有意义?你试过DateTime.Parse吗?或者你可以把ep.Value转换成stringIdeas?如何将两个不兼容的类型之一转换为另一个类型?如果需要在查询中使用它,则可以尝试将startDate和endDate转换为字符串,并尝试使用字母排序,但这取决于数据库中时间跨度的格式。如果您过滤掉内存中已经存在的数据IEnumerable,那么最好转换日期日期时间。数据库中时间跨度的格式是什么?您应该指定您使用的ORM。这里的每个人似乎都假设您查询一个IEnumerable,可以只使用DateTime.Parse,我怀疑您的特定LINQ Provider中不支持它。您应该重构数据库,使您的日期值成为实际的日期数据类型,不是日期的字符串表示。您打算如何确定两个日期时间字符串中的哪一个按时间顺序出现在另一个之前?我不知道这些字符串是什么样子,但如果它们看起来像2014-05-23,您可以对它们进行比较。否则,您需要编写一些比较器这里有很多很多种方法可以将日期写成字符串。它们中很少有符合词典排序的。当代码需要转换为SQL查询时,编写比较器不是一个选项。SQL没有自定义字符串比较器。