1、数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值
1 //实体类版本 2 List<ProgramTimeModel> TotalAllList = GetData(); 3 4 var a = from p in TotalAllList.AsEnumerable() 5 group p by p.ProgramTime_ID into g 6 select new ProgramTimeModel 7 { 8 ProgramTime_ID = g.Key, 9 Saled = g.Sum(p => p.Saled), 10 ComeIn = g.Sum(p => p.ComeIn) 11 }; 12 13 //拿数据 14 if (a != null && a.ToList().Count > 0) 15 { 16 //方式1 17 List<ProgramTimeModel> TaList = new List<ProgramTimeModel>(); 18 foreach (ProgramTimeModel item in a) 19 { 20 TaList.Add(item); 21 } 22 23 //方式2 24 a.ToList().ForEach(p => 25 { 26 TaList.Add(p); 27 } 28 ); 29 } 30 31 32 //DataTable版本 33 DataTable dtList = GetDataTable(); 34 var b = from r in dtList.AsEnumerable() 35 group r by r.Field<long>("ProgramTime_ID") into g 36 select new 37 { 38 ProgramTime_ID = g.Key, 39 Saled = g.Sum(n => n.Field<int>("Saled")), 40 ComeIn = g.Sum(n => n.Field<int>("ComeIn")) 41 }; 42 43 //拿数据1 44 if (b != null && b.ToList().Count > 0) 45 { 46 //方式1 47 DataTable dt = dtList.Clone(); 48 foreach (var item in b) 49 { 50 DataRow dr = dt.NewRow(); 51 dr["ProgramTime_ID"] = item.ProgramTime_ID; 52 dr["Saled"] = item.Saled; 53 dr["ComeIn"] = item.ComeIn; 54 dt.Rows.Add(dr); 55 } 56 57 //方式2 58 b.ToList().ForEach(p => 59 { 60 DataRow dr = dt.NewRow(); 61 dr["ProgramTime_ID"] = p.ProgramTime_ID; 62 dr["Saled"] = p.Saled; 63 dr["ComeIn"] = p.ComeIn; 64 dt.Rows.Add(dr); 65 } 66 ); 67 }