Windows Phone LocalDB方法没有受支持的SQL转换

时间:2014-05-23 13:25:22

标签: linq parsing datetime windows-phone localdb

我想在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中解析日期时间?

1 个答案:

答案 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);