我想在LINQ查询中比较datetime(我需要解析它)
From i In db.Downloads
Where i.WantExpiration And DateTime.Parse(i.Expiration) < DateTime.Now
每次我收到错误:方法&#39; System.DateTime Parse(System.String)&#39;没有受支持的SQL翻译。
我如何在LINQ to SQL中解析日期时间?
答案 0 :(得分:1)
你可以这样做:
From i In db.Downloads
Where i.WantExpiration And i.Expiration < DateTime.Now
,前提是过期是数据库中的DateTime列。
由于LINQ-SQL在sql中转换我们的linq查询,然后在db中发送它们,然后执行并且结果返回给我们,因此预期会出现错误。话虽如此,在sql中没有像DateTime.Parse()
类似的东西,所以这个方法无法在SQL中转换为相应的方法。因此,您的查询无法在SQL中翻译。
如果Expiration不是数据库中的DateTime列,那么您可以进行以下操作 (我看到你的查询是用VB编写的,但由于我不使用VB,我会用C#编写自己的,然后你可以把它改成VB。)
// Initially you will get all your data in memory.
var query = (from d in db.Downloads
select d).AsEnumerable();
// Then you will query the in memory data.
var data = (from q in query
where q.WantExpiration &&
DateTime.Parse(q.Expiration) < DateTime.Now);