这两天遇到一个很棘手的事,现在正使用ef code first做一个项目,项目已经完成了,现在客户提了个需求,要做个统计图,分别实现数据按日、按周、按月分组统计,但是在写linq表达式的时候,不知道这样的分组表达式怎么写,我先写按周分组统计的,因为实现其实一个,其它的都出来了,但是还没找到方法,求大家指点啊和提示!比如说现在有个数据表是这样的:Id(主键int) categoryName(nvarchar) Click(int) CreateTime(datetime) ,现在按周分组统计每周的点击量
我有个类似的, 你试试
var data = from c in items
group c by c.ManifestDate.Day into g
select new { g.Key ,Total= g.Sum(n=>n.ReferenceCount) };
非常感谢你的帮忙,你这个我写过的,你这个会出现这样的情况,假如数据库里人3月3号的数据,4月3号的数据,按照你这样的方式写,得出一结果是3月3号和4月3号的数据是同一天的,会把所有系统里3号当天的数据加在一起,我要的是不是这样的结果,我想要3月3号的数据和其它月份的数据都各是各的,就是以天统计
var data = from c in query.AsEnumerable() group c by Condition(c.CreateDate.Value,"day") into g select new { g.Key, Total = g.Sum(n => n.CharsRecords.Count) }; string Condition(DateTime date,string type) { if (type == "day") { return date.ToString("yyyy-M-d"); } else if (type == "month") { return date.ToString("yyyy-M"); } return date.Year.ToString(); }
@流星147:
@Yu: 非常感谢,但是还是不行,,出现这个错误。
@流星147:
from c in query.AsEnumerable()
@Yu: 这个是可以实现,但不是长远之计啊,数据量大我担心有性能瓶颈,不过还是感谢。
别沉啊,欢迎大家来探讨
@anech: 你有毒 别人都给你提供解决方法了
首先是 按月 在按 日 在按 周 分组 1 月 怎么取(字符截取 createtime里面的月 日,同理),
2 周怎么取 好像有个函数传入时间 得到周吧
有点不明白,能上点代码没,如果我先把createtime转tostring,linq表达试不支持
我和楼主遇到同样的问题 也在寻求答案 我的还涉及到 数据库中
DATEPART(wk,date)
这个函数 不知道用EF 怎么转换