linq分组求和_实体类和datatable

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                 }
View Code

2、用到的datatable测试数据

 1 public DataTable GetDataTable()
 2         {
 3             DataTable dt = new DataTable();
 4             dt.Columns.Add("ProgramTime_ID", typeof(long));
 5             dt.Columns.Add("ProgramTime_Name", typeof(string));
 6             dt.Columns.Add("ProgramTime_Time", typeof(DateTime));
 7             dt.Columns.Add("Saled", typeof(int));
 8             dt.Columns.Add("SaleNoStart", typeof(int));
 9             dt.Columns.Add("ComeIn", typeof(int));
10 
11             DataRow dr = dt.NewRow();
12             dr["ProgramTime_ID"] = 1;
13             dr["ProgramTime_Name"] = "场次二";
14             dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-12 12:20");
15             dr["Saled"] = 21;
16             dr["SaleNoStart"] = 14;
17             dr["ComeIn"] = 11;
18             dt.Rows.Add(dr);
19 
20             dr = dt.NewRow();
21             dr["ProgramTime_ID"] = 2;
22             dr["ProgramTime_Name"] = "场次三";
23             dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-13 12:20");
24             dr["Saled"] = 221;
25             dr["SaleNoStart"] = 124;
26             dr["ComeIn"] = 121;
27             dt.Rows.Add(dr);
28 
29             dr = dt.NewRow();
30             dr["ProgramTime_ID"] = 3;
31             dr["ProgramTime_Name"] = "场次四";
32             dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-14 12:20");
33             dr["Saled"] = 231;
34             dr["SaleNoStart"] = 134;
35             dr["ComeIn"] = 131;
36             dt.Rows.Add(dr);
37 
38             dr = dt.NewRow();
39             dr["ProgramTime_ID"] = 3;
40             dr["ProgramTime_Name"] = "场次四";
41             dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-14 12:20");
42             dr["Saled"] = 231;
43             dr["SaleNoStart"] = 134;
44             dr["ComeIn"] = 131;
45             dt.Rows.Add(dr);
46 
47             return dt;
48         }
View Code

3、实体类的测试数据

1 public List<ProgramTimeModel> GetData()
2         {
3             List<ProgramTimeModel> list = new List<ProgramTimeModel>();
4             list.Add(new ProgramTimeModel() { ProgramTime_ID = 1, ProgramTime_Name = "场次一", ProgramTime_Time = Convert.ToDateTime("2016-08-09 12:20"), Saled = 1100, SaleNoStart = 1165, ComeIn = 61237 });
5             list.Add(new ProgramTimeModel() { ProgramTime_ID = 2, ProgramTime_Name = "场次二", ProgramTime_Time = Convert.ToDateTime("2016-08-12 12:20"), Saled = 83, SaleNoStart = 62, ComeIn = 67 });
6             list.Add(new ProgramTimeModel() { ProgramTime_ID = 3, ProgramTime_Name = "场次三", ProgramTime_Time = Convert.ToDateTime("2016-08-20 12:20"), Saled = 12, SaleNoStart = 456, ComeIn = 67 });
7             list.Add(new ProgramTimeModel() { ProgramTime_ID = 3, ProgramTime_Name = "场次三", ProgramTime_Time = Convert.ToDateTime("2016-08-20 12:20"), Saled = 12, SaleNoStart = 456, ComeIn = 67 });
8             return list;
9         }
View Code

 

注:方式一或方式二只需要取一种

 

转载于:https://www.cnblogs.com/MycnBlogs7854/p/7718156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值