C # generate statistical reports based on day, week, month summary statistics

Look at the core code:

     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 new {x.Date.Day});        
       //
NOTE The circumferential packet statistics IF (groupby.Equals ( " 2 " ))         groupBy = DynamicQueryable.GroupBy <DataEntity, Dynamic > (query.AsQueryable (), X => new new { = Week x.Date.Date.GetWeekOfYear ()});       the else IF (groupby.Equals ( " . 3 " )) // NOTE The group statistics month        groupBy = DynamicQueryable.GroupBy <DataEntity, Dynamic > (query.AsQueryable (), = X> new new {x.Date.Month});       Query = groupBy.Select (G => new 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()

   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);
}


}

Guess you like

Origin www.cnblogs.com/gonghui2016/p/12335625.html