private static List<IReportData> GetCompanyReportData(string jsonData) { var inListData = MyJSON.ToObject<List<ReportOnlineOut>>(jsonData); #region return a IReportData list var items = new List<IReportData>(); inListData.ForEach(o => items.Add(new Company { CityName = o.CityName, RegionName = o.RegionName, CompanyName = o.CompanyName, CarNum = o.CarNum, OnlineNum = o.OnlineNum, OfflineNum = o.OfflineNum })); items.Add(new Company { CarNum = inListData.Sum(o => o.CarNum), OnlineNum = inListData.Sum(o => o.OnlineNum), OfflineNum = inListData.Sum(o => o.OfflineNum) }); return items; #endregion #region return a ReportResult object //var rd = new ReportResult(); //var total = new ReportOnlineTotal(); //total.CarNum = inListData.Sum(o => o.CarNum); //total.OnlineNum = inListData.Sum(o => o.OnlineNum); //total.OfflineNum = inListData.Sum(o => o.OfflineNum); //var items = new List<IReportData>(); //inListData.ForEach(o => rd.Items.Add(o)); //rd.Total = total; //return rd; #endregion }
/// <summary> /// 生成报表数据 /// </summary> /// <param name="jsonData"></param> /// <returns></returns> private static List<IReportData> GetAreaReportData(string jsonData) { //var inListData = MyJSON.ToObject<List<Company>>(jsonData); //var areaQuery = (from d in inListData // group new { d.OnlineNum, d.OfflineNum, d.CarNum } by new { d.RegionName, d.CityName } // into g // from c in g // select new // { // g.Key.CityName, // g.Key.RegionName, // Numbs = g.FirstOrDefault() // }).ToList(); var inlistData = MyJSON.ToObject<List<ReportOnlineOut>>(jsonData);//MyJSON.ToObject<List<dynamic>>(jsonData); var areas = new List<dynamic>(); inlistData.ForEach(o => { dynamic area = areas.SingleOrDefault(a => a.RegionID == o.RegionID); if (area == null) { area = new ExpandoObject(); area.CityName = o.CityName; area.RegionID = o.RegionID; area.ReionName = o.RegionName; area.CarNum = o.CarNum; area.OnlineNum = o.OnlineNum; area.OfflineNum = o.OfflineNum; } else { area.CarNum += o.CarNum; area.OnlineNum += o.OnlineNum; area.OfflineNum += o.OfflineNum; } areas.Add(area); }); #region retrun a IReportData list var items = new List<IReportData>(); inlistData.ForEach(o => items.Add(new Area() { CityName = o.CityName, RegionName = o.RegionName, CarNum = o.CarNum, OnlineNum = o.OnlineNum, OfflineNum = o.OfflineNum })); items.Add(new Area { CarNum = areas.Sum(o => o.CarNum), OnlineNum = areas.Sum(o => o.OnlineNum), OfflineNum = areas.Sum(o => o.OfflineNum) }); return items; #endregion #region return a ReportResult object //var rd = new ReportResult(); //var total = new ReportOnlineTotal(); //total.CarNum = items.Sum(o => o.CarNum); //total.OnlineNum = items.Sum(o => o.OnlineNum); //total.OfflineNum = items.Sum(o => o.OfflineNum); //rd.Items = new List<IReportData>(); //items.ForEach(o => rd.Items.Add(o)); //rd.Total = total; //return rd; #endregion }