你好这是我在这里发表的第一篇文章
我在使用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)
非常感谢您的解决方案,也非常感谢。
答案 0 :(得分:1)
而不是Convert.ToDateTime (si.ReceivedTime) <= DateTime.Now
尝试SqlFunctions.DateDiff("s", si.ReceivedTime, DateTime.Now) > 0