1、数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值

                 //实体类版本
List<ProgramTimeModel> TotalAllList = GetData(); var a = from p in TotalAllList.AsEnumerable()
group p by p.ProgramTime_ID into g
select new ProgramTimeModel
{
ProgramTime_ID = g.Key,
Saled = g.Sum(p => p.Saled),
ComeIn = g.Sum(p => p.ComeIn)
}; //拿数据
if (a != null && a.ToList().Count > )
{
//方式1
List<ProgramTimeModel> TaList = new List<ProgramTimeModel>();
foreach (ProgramTimeModel item in a)
{
TaList.Add(item);
} //方式2
a.ToList().ForEach(p =>
{
TaList.Add(p);
}
);
} //DataTable版本
DataTable dtList = GetDataTable();
var b = from r in dtList.AsEnumerable()
group r by r.Field<long>("ProgramTime_ID") into g
select new
{
ProgramTime_ID = g.Key,
Saled = g.Sum(n => n.Field<int>("Saled")),
ComeIn = g.Sum(n => n.Field<int>("ComeIn"))
}; //拿数据1
if (b != null && b.ToList().Count > )
{
//方式1
DataTable dt = dtList.Clone();
foreach (var item in b)
{
DataRow dr = dt.NewRow();
dr["ProgramTime_ID"] = item.ProgramTime_ID;
dr["Saled"] = item.Saled;
dr["ComeIn"] = item.ComeIn;
dt.Rows.Add(dr);
} //方式2
b.ToList().ForEach(p =>
{
DataRow dr = dt.NewRow();
dr["ProgramTime_ID"] = p.ProgramTime_ID;
dr["Saled"] = p.Saled;
dr["ComeIn"] = p.ComeIn;
dt.Rows.Add(dr);
}
);
}

2、用到的datatable测试数据

 public DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ProgramTime_ID", typeof(long));
dt.Columns.Add("ProgramTime_Name", typeof(string));
dt.Columns.Add("ProgramTime_Time", typeof(DateTime));
dt.Columns.Add("Saled", typeof(int));
dt.Columns.Add("SaleNoStart", typeof(int));
dt.Columns.Add("ComeIn", typeof(int)); DataRow dr = dt.NewRow();
dr["ProgramTime_ID"] = ;
dr["ProgramTime_Name"] = "场次二";
dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-12 12:20");
dr["Saled"] = ;
dr["SaleNoStart"] = ;
dr["ComeIn"] = ;
dt.Rows.Add(dr); dr = dt.NewRow();
dr["ProgramTime_ID"] = ;
dr["ProgramTime_Name"] = "场次三";
dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-13 12:20");
dr["Saled"] = ;
dr["SaleNoStart"] = ;
dr["ComeIn"] = ;
dt.Rows.Add(dr); dr = dt.NewRow();
dr["ProgramTime_ID"] = ;
dr["ProgramTime_Name"] = "场次四";
dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-14 12:20");
dr["Saled"] = ;
dr["SaleNoStart"] = ;
dr["ComeIn"] = ;
dt.Rows.Add(dr); dr = dt.NewRow();
dr["ProgramTime_ID"] = ;
dr["ProgramTime_Name"] = "场次四";
dr["ProgramTime_Time"] = Convert.ToDateTime("2016-08-14 12:20");
dr["Saled"] = ;
dr["SaleNoStart"] = ;
dr["ComeIn"] = ;
dt.Rows.Add(dr); return dt;
}

3、实体类的测试数据

 public List<ProgramTimeModel> GetData()
{
List<ProgramTimeModel> list = new List<ProgramTimeModel>();
list.Add(new ProgramTimeModel() { ProgramTime_ID = , ProgramTime_Name = "场次一", ProgramTime_Time = Convert.ToDateTime("2016-08-09 12:20"), Saled = , SaleNoStart = , ComeIn = });
list.Add(new ProgramTimeModel() { ProgramTime_ID = , ProgramTime_Name = "场次二", ProgramTime_Time = Convert.ToDateTime("2016-08-12 12:20"), Saled = , SaleNoStart = , ComeIn = });
list.Add(new ProgramTimeModel() { ProgramTime_ID = , ProgramTime_Name = "场次三", ProgramTime_Time = Convert.ToDateTime("2016-08-20 12:20"), Saled = , SaleNoStart = , ComeIn = });
list.Add(new ProgramTimeModel() { ProgramTime_ID = , ProgramTime_Name = "场次三", ProgramTime_Time = Convert.ToDateTime("2016-08-20 12:20"), Saled = , SaleNoStart = , ComeIn = });
return list;
}

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

linq分组求和_实体类和datatable的更多相关文章

  1. 实体类和DataTable的转换

    引子 最近在项目中在数据库查询的时间,总是要用到数据表到实体类对象列表的转化,自己封装了一个转换的方法,用起来还比较方便,记下来,以后可以重复使用,原理就主要是利用反射,当然有更好的ORM框架可以实现 ...

  2. LINQ to SQL 建立实体类

    使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,L ...

  3. 步步学LINQ to SQL:为实体类添加关系【转】

    [IT168 专稿]本文详细为你阐述了如何在你的应用程序中实现LINQ to SQL.附件的示例程序包括了这里探讨的所有代码,还提供了一个简单的WPF图形界面程序来显示通过数据绑定返回的结果集. 第一 ...

  4. LINQ to SQL 建立实体类 (转)

    http://www.cnblogs.com/DebugLZQ/archive/2012/11/14/2770449.html 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就 ...

  5. XML之序列化C#实体类,DataTable,List

    1. static void Main(string[] args) { #region 实体类 Request patientIn = new Request(); patientIn.System ...

  6. 批量插入实体类转化DataTable

    /// <summary> /// 根据实体类得到表结构 /// </summary> /// <param name="model">实体类& ...

  7. Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态

    Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...

  8. List实体类、DataTable与xml互转

    序列化常用Attribute讲解说明 [XmlRootAttribute("MyCity", Namespace="abc.abc", IsNullable=f ...

  9. 回顾:Linq To SQL语法 - 实体类

    第一篇博客,还望各位大神勿喷 小弟在此代码奉上........ 借用NorthWind数据库,实现一个商品展示的小功能.上代码: 添加对Linq的引用 using System.Data.Linq;/ ...

随机推荐

  1. jquery.lazyload.js实现图片懒加载

    个人理解:将需要延迟加载的图片的src属性全部设置为一张相同尽可能小(目的是尽可能的少占宽带,节省流量,由于缓存机制,当浏览器加载了一张图片之后,相同的图片就会在缓存中拿,不会重新到服务器上拿)的图片 ...

  2. cookies、sessionStorage、和localStorage的区别。

    为什么会有cookie和session? 我们都知道http是无状态的协议无连接的,客户每次在读取web页面时服务器都会打开新的会话.服务器不会自动维护客户上下文的信息,那么session就是一种保存 ...

  3. Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分(结束)

    一.介绍           今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分.话不多说,开始我们今天的讲解.如果要想看第一篇文章,地址如下:http: ...

  4. 【原】【译文】理解storm拓扑并行度

    原文地址: http://storm.apache.org/releases/1.2.1/Understanding-the-parallelism-of-a-Storm-topology.html ...

  5. GridView 翻页 索引超出范围

    事件回顾 今天GridView翻页时,又遇到错误:索引超出范围.必须为非负值并小于集合大小. 这是当时的PageIndexChanging和RowCommand两个事件的后台代码 protected ...

  6. MySQL到MongoDB的数据同步方法!

    许多公司随着业务发展,单数据库实例已经不能满足业务需要,需要定期进行数据交换,同步到MongoDB, 或其他位置的MySQL,以分散数据库的并发压力. 目前大部分都采用自行开发的方式处理,存在开发成本 ...

  7. 【Uoj34】多项式乘法(NTT,FFT)

    [Uoj34]多项式乘法(NTT,FFT) 题面 uoj 题解 首先多项式乘法用\(FFT\)是一个很久很久以前就写过的东西 直接贴一下代码吧.. #include<iostream> # ...

  8. 【Luogu1345】周游加拿大(动态规划)

    [Luogu1345]周游加拿大(动态规划) 题面 题目描述 你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直到你到达最东边 ...

  9. LCT总结

    LCT总结 类比树剖,树剖是通过静态地把一棵树剖成若干条链然后用一种支持区间操作的数据结构维护(比如线段树.树状数组),而LCT是动态地去处理这个问题. 大家都知道树剖用线段树维护,而LCT用\(sp ...

  10. 含隐变量模型求解——EM算法

    1 EM算法的引入1.1 EM算法1.2 EM算法的导出2 EM算法的收敛性3EM算法在高斯混合模型的应用3.1 高斯混合模型Gaussian misture model3.2 GMM中参数估计的EM ...