Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html
今天在使用linq处理一下需求时碰到一点小问题,特此记录。
需求:
按照品名相同的进行汇总,数量相加、表号按分号分割显示
1、组织测试数据表

DataTable tableA1 = new DataTable();
tableA1.Columns.AddRange(new DataColumn[] { new DataColumn("品名"), new DataColumn("规格"), new DataColumn("表号"),new DataColumn("数量") });
tableA1.Rows.Add(new object[] { "螺旋式", "LS-X", "111","2" });
tableA1.Rows.Add(new object[] { "螺旋式", "LS-X", "222","1" });
tableA1.Rows.Add(new object[] { "指针式", "LX-3", "523","2" });
tableA1.Rows.Add(new object[] { "其他式", "L-1", "666", "2" });
tableA1.Rows.Add(new object[] { "其他式", "L-1", "456", "1" });
tableA1.Rows.Add(new object[] { "其他式", "L-1", "990", "2" });

2、使用linq 进行查询处理

var query = from c in t.AsEnumerable()
group c by new {
pingming = c.Field<string>("品名"),
guige = c.Field<string>("规格")
}
into s
select new
{
pingming = s.Select(p => p.Field<string>("品名")).First(),
shuliang = s.Sum(p => Convert.ToInt32(p.Field<string>("数量"))),
guige = s.Select(p => p.Field<string>("规格")).First(),
biaohao = string.Join(";",s.Select(p => p.Field<string>("表号")))
}; DataTable tbl = tableA1.Clone();
query.ToList().ForEach(p => tbl.Rows.Add(p.pingming, p.guige,p.biaohao,p.shuliang));

查询结果:
Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据的更多相关文章
- LINQ按多列分组(Group By)并计算总和(Sum) (转载)
来源:https://codedefault.com/2018/group-by-multiple-columns-and-sum-in-csharp .NET[C#]LINQ按多列分组(Group ...
- sql的 group by 分组;linq的 group by 分组
先来看看 linq的,下面的一段linq 是 ,在 学生导入数据的时候,我们根据学生的手机号码和学生名称进行分组,如果有重复的,我们就筛选出来,用到了 linq的 group by,注意这里是new出 ...
- linq分组求和_实体类和datatable
1.数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值 //实体类版本 List<ProgramTimeModel> TotalAllList = G ...
- Linq DataTable Group By 分组显示人员明细
实现功能: 多个字段分组源码样例: 原始数据: 分组后的输出结果: 源代码: public static void PrintPersons() { //准备数据 DataTable dt ...
- 在LINQ查询中LINQ之Group By的用法
LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.Linq有很 ...
- linq中group by
本文导读:LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.L ...
- Linq使用Group By 1
Linq使用Group By 1 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述 ...
- Linq分组功能
Linq在集合操作上很方便,很多语法都借鉴自sql,但linq的分组却与sql有一定的区别,故整理发布如下. 1. Linq分组 分组后以Key属性访问分组键值. 每一组为一个IEnumberAbl ...
- Linq使用Group By
1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:Linq使用Group By按C ...
随机推荐
- 机顶盒 gettimeofday()获取毫秒溢出
最近在写代码的时候遇见了一个bug,在获取当前时间戳的毫秒时,我自己测试的时候总是OK的,但是测试那边总是测不对,之前一直以为是因为我存储的类型的不对,从long long类型从lld改成llu,然后 ...
- (一) Mysql 简介及安装和配置
第一节:Mysql 简介 百度百科 第二节:Mysql 安装及配置 1,Mysql5.1 下载及安装 2,Mysql 数据库编码配置 utf-8 3,Mysql 图形界面 Sqlyog 下载及安装
- 三十分钟理解计算图上的微积分:Backpropagation,反向微分
神经网络的训练算法,目前基本上是以Backpropagation (BP) 反向传播为主(加上一些变化),NN的训练是在1986年被提出,但实际上,BP 已经在不同领域中被重复发明了数十次了(参见 G ...
- [转]Java中堆和栈创建对象的区别
转载自http://blog.csdn.net/hbhhww/article/details/8152838 栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序 ...
- vue单文件中scoped样式如何穿透?
在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素.通过该属性, ...
- 使用BEEGO建立一个基本的API框架
用BEE API命令生成框架. 然后自行更改MODELS,加入MYSQL支持ORM. 然后,自定义了字段的对应,表的名称等. 参考URL: http://www.cnblogs.com/studyzy ...
- Python写网络爬虫爬取腾讯新闻内容
最近学了一段时间的Python,想写个爬虫,去网上找了找,然后参考了一下自己写了一个爬取给定页面的爬虫. Python的第三方库特别强大,提供了两个比较强大的库,一个requests, 另外一个Bea ...
- pdb-不需要IDE也能调试
python中有个pdb模块,使python代码也可以像gdb那样进行调试,一般情况下pdb模块可以在代码内直接使用,也可以通过命令行参数的形式添加该模块进行调试(python -m pdb file ...
- pip/conda国内镜像--安装包提速
对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...
- 用LR录制文件下载并随机产生文件名
用LR录制文件下载并随机产生文件名 {H.IY:X.Tn0 8h&~-D|6fV0Action()51Testing软件测试网GE$nV}s,R{51Testing软件测试网 }9sUS'q ...