我有以下SQL命令:
SELECT CONVERT(varchar, Logged, 103) AS Visited, COUNT(ID) AS Totals
FROM tblStats
GROUP BY CONVERT(varchar, Logged, 103)
ORDER BY Visited DESC
我想将其转换为可以与实体框架一起使用的L2S语句,但在处理日期时间类型时,我会遇到各种错误,具体取决于我如何尝试解决问题。
方法:
var results = from s in db.Stats
group s by (s.Logged.Date.ToString()) into Grp
select new { Day = Grp.Key, Total = Grp.Count() };
错误:
LINQ to Entities无法识别 方法'System.String ToString()' 方法,这个方法不能 翻译成商店表达。
方法:
var results = from s in db.Stats
group s by (s.Logged.Date) into Grp
select new { Day = Grp.Key, Total = Grp.Count() };
错误:
指定的类型成员'Date'是 LINQ to Entities不支持。 只有初始化者,实体成员和 实体导航属性是 支撑。
我需要什么语法才能使查询有效?
答案 0 :(得分:1)
尝试使用EntityFunctions.TruncateTime方法:
var results = from s in db.Stats
group s by EntityFunctions.TruncateTime(s.Logged) into Grp
select new { Day = Grp.Key, Total = Grp.Count() };
答案 1 :(得分:0)
您需要Date
中的s.Logged.Date
部分吗?
你试过这个:
var results = from s in db.Stats
group s by (s.Logged) into Grp
select new { Day = Grp.Key, Total = Grp.Count() };
我假设Logged
是属性(表中的列)。