C# 根据天、周、月汇总统计生成统计报表

先看核心代码:

     public List<DataEntity> SearchShopSalesReport(DateTimeOffset? dateFrom, DateTimeOffset? dateTo,string groupBy)        {
            var query = data.DataEntity      //这里data为DbContext
                .AsEnumerable();

            if (dateFrom.HasValue)
                query = query.Where(x => x.Date >= dateFrom);
            if (dateTo.HasValue)
                query = query.Where(x => x.Date <= dateTo);
              //注意根据天分组统计
            var groupBy = DynamicQueryable.GroupBy<DataEntity, dynamic>(query.AsQueryable(), x => new { x.Date.Day });
              //注意根据周分组统计      if (groupby.Equals("2"))         groupBy = DynamicQueryable.GroupBy<DataEntity, dynamic>(query.AsQueryable(), x => new { Week = x.Date.Date.GetWeekOfYear() });       else if (groupby.Equals("3")) //注意根据月分组统计        groupBy = DynamicQueryable.GroupBy<DataEntity, dynamic>(query.AsQueryable(), x => new { x.Date.Month }); 

      query = groupBy.Select(g => new DataEntity {         ShopId = g.FirstOrDefault().ShopId,         MarketplaceId = g.FirstOrDefault().MarketplaceId,         Date = g.FirstOrDefault().Date,         Sessions = g.Sum(x => x.Sessions),         BoxPercentage = g.Average(x => x.BuyBoxPercentage)      }).ToObservableCollection(); 

    return query.ToList();

DynamicQueryable.GroupBy()与ToObservableCollection()还有GetWeekOfYear()方法

   public static class DynamicQueryable
    {        public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>
             (IQueryable<TSource> query, Expression<Func<TSource, TKey>> keySelector)
        {
              return query.GroupBy(keySelector);
        }          

public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> col)
{
return new ObservableCollection<T>(col);
}

}

public static class DateTimeExtension
{
public static int GetWeekOfYear(this DateTime dt)
{
GregorianCalendar calendar = new GregorianCalendar();
return calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);//注意这里一周是以星期一为第一天
}
}

前端图表显示使用插件:echarts 官网为:https://www.echartsjs.com/zh/index.html

原文地址:https://www.cnblogs.com/gonghui2016/p/12335625.html

时间: 2024-10-08 06:02:45

C# 根据天、周、月汇总统计生成统计报表的相关文章

MySql按周/月/日分组统计数据的方法

知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(create_time,'%Y%m') month

MySql 按周/月/日统计数据的方法

知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(create_time,'%Y%m') month

按天周月统计数据

 MySql按周,按月,按日分组统计数据 2011-09-07 10:46:00 标签:MySql 数据库 按周月日分组 统计数据 休闲 知识关键词:DATE_FORMAT select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count fro

mysql按周/月/年统计数据

mysql 按周/月/年统计数据分别如下 select DATE_FORMAT(UPDATE_TIME,'%Y%u') weeks,count(UPDATE_TIME) count from table_name group by weeks; select DATE_FORMAT(UPDATE_TIME,'%Y%m%d') days,count(UPDATE_TIME) count from table_name group by days; select DATE_FORMAT(UPDATE

Flex自定义组件开发之日周月日期选择日历控件

原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的任一位置单击时,将弹出一个 DateChooser 控件,显示当月的所有日期.如果未选择日期,则该文本字段为空白,并且 DateChooser 控件中将显示当前日期的月份.当 DateChooser 控件处于打开状态时,用户可以在各个月份和年份之间滚动,并选择某个日期.选择日期后,DateChooser 控件关闭,

月汇总工作表 VBA

+ ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

Java实现生成统计打印随机数

初学JAVA,练习一下数组实现生成统计打印随机数和集合实现生成统计打印随机数 数组实现生成统计打印随机数 1 /** 2 * 随机生成50个数字(整数),第个数字的范围是[10,50].统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它.打印时按照数字的升序排列.*/ 3 import java.util.Arrays; 4 public class RandomTest 5 { 6 public static vo

周(月)总结 ------------ 5月10日,祝全天下母亲母亲节快乐。

好吧. 让我们谈点正(che)经(dan)的事. 细数一数这周(月)都干了点啥. 5月1~3 首先,颓了一整个五一,今天去那个亲戚明天看这个的- -.整个五一就是颓过去了,五一的那个ch的比赛被虐的跟狗一样,递推都想不到,鬼知道当时自己中什么邪了. Conclude:在家的效率低的不行,这点已经注意了!= = 5月4~10 咳,这一周,个人评价60分吧,具体为什么呢,这一周的状态的确比以前好多了,不过在面对一些傻题的时候做不到1A,代码准确度不够,(不过现在好多了),尤其是面对傻题却想不到,这简

获得自然日周月时间

1.以下函数都可以直接使用. function getReportDates($periods){ $dates = array(); //当前时间周期的起止时间 $end = getWeekendByDate($periods); $start = date("Y-m-d",strtotime("-".($periods-1). "day",strtotime($end))); //获取日期($times个周期) $dates['start']