关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

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

发布时间:
先看核心代码: public List 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(query.AsQueryable(), x => new { x.Date.Day });               //注意根据周分组统计      if (groupby.Equals("2"))         groupBy = DynamicQueryable.GroupBy(query.AsQueryable(), x => new { Week = x.Date.Date.GetWeekOfYear() });       else if (groupby.Equals("3")) //注意根据月分组统计        groupBy = DynamicQueryable.GroupBy(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> GroupBy (IQueryable query, Expression> keySelector) { return query.GroupBy(keySelector);   }           public static ObservableCollection ToObservableCollection(this IEnumerable col) { return new ObservableCollection(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

/template/Home/Zkeys/PC/Static