LINQ to Entities无法识别方法'System.DateTime ToDateTime(System.String)'方法

时间:2014-05-09 20:25:35

标签: sql linq entity-framework datetime

你好这是我在这里发表的第一篇文章

我在使用EF时遇到了一些问题,我在VS 2010中使用EF 5和6尝试了以下代码。

我有一个名为 MYTABLE 的表和字段 ReveivedTime 哪个varchar(255)但是它的日期时间值如“4/29/2014 12:00:00 AM“即可。 注意:我无法更改DataType而且我无法将SP写入Convert,我确实有限制,所以我可以选择使用LAMBDA

我已经厌倦了 LINQPad 4 中的以下代码,但它运行正常,但在使用EF 5/6的VS2010中也不行。

收到错误

LINQ to Entities无法识别方法'System.DateTime ToDateTime(System.String)'方法,并且此方法无法转换为商店表达式。

Convert.ToDateTime(si.ReceivedTime)导致问题

   MYTable
  .Where (
      si => 
            ((Convert.ToDateTime(si.ReceivedTime) >= DateTime.Now.AddDays(-10)) && 
               (Convert.ToDateTime (si.ReceivedTime) <= DateTime.Now)
            )
   )
   .GroupBy (g => new 
                    {
                        Day = Convert.ToDateTime(g.ReceivedTime).Day,
                        Month = Convert.ToDateTime(g.ReceivedTime).Month,
                        Year = Convert.ToDateTime(g.ReceivedTime).Year,
                        City = g.City,
                    })
   .Select (
      g => 
         new  
         {
           Count = g.Count(),
           g.Key.Day,
           g.Key.Month,
           g.Key.Year,
           g.Key.City,
           Date = Convert.ToDateTime(g.Key.Year  + "/" + g.Key.Month + "/" + g.Key.Day),
         }
   )
   .OrderBy(x => x.Count)

非常感谢您的解决方案,也非常感谢。

1 个答案:

答案 0 :(得分:1)

而不是Convert.ToDateTime (si.ReceivedTime) <= DateTime.Now尝试SqlFunctions.DateDiff("s", si.ReceivedTime, DateTime.Now) > 0