关于Linq To Entity中的GROUP BY ,如何写?

MR00009 2013-12-25 03:22:58

SELECT CONVERT(varchar(10),uDatetime,120), COUNT(*)
FROM Logs
WHERE uType='警告'
GROUP BY CONVERT(varchar(10),uDatetime,120)
HAVING CONVERT(varchar(10),uDatetime,120) BETWEEN '2013-12-21' AND '2013-12-22'


求问,如何将上面的SQL代码转为linq to entity。



entities.Logs.Where(o => o.uDatetime >= timeStart && o.uDatetime < timeend && o.uType == type).ToList().GroupBy(o => new DateTime(o.uDatetime.Value.Year, o.uDatetime.Value.Month, o.uDatetime.Value.Day)).Select(z => new Propertys { Datetime = new DateTime(z.Key.Year, z.Key.Month, z.Key.Day), Count = z.Count() }).ToList<Propertys>();


我是这样子写的,可是性能超级差,主要是GroupBy前面的ToList(),不加的话会报错,加了又变得很慢。
...全文
2333 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyun0112 2013-12-25
  • 打赏
  • 举报
回复
new { y=SqlFunctions.DatePart("yyyy",o.uDatetime),m=SqlFunctions.DatePart("mm",o.uDatetime),d=SqlFunctions.DatePart("dd",o.uDatetime)}
MR00009 2013-12-25
  • 打赏
  • 举报
回复
错误 1 无效的匿名类型成员声明符。匿名类型成员必须使用赋值、简单名称或成员访问来声明。
feiyun0112 2013-12-25
  • 打赏
  • 举报
回复
GroupBy(o => new {SqlFunctions.DatePart("yyyy",o.uDatetime),SqlFunctions.DatePart("mm",o.uDatetime),SqlFunctions.DatePart("dd",o.uDatetime)})

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧