Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
2014-02-18 14:02
405 查看
转自:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html
需求:
按照品名相同的进行汇总,数量相加、表号按分号分割显示
![](http://pic002.cnblogs.com/images/2012/292243/2012092622451353.png)
1、组织测试数据表
![](http://pic002.cnblogs.com/images/2012/292243/2012092622504870.png)
2、使用linq 进行查询处理
查询结果:
![](http://pic002.cnblogs.com/images/2012/292243/2012092622531815.png)
重点:
String.Join 方法 重载
载此成员。有关此成员的完整信息(包括语法、用法和示例),请单击重载列表中的相应名称。
重载列表
需求:
按照品名相同的进行汇总,数量相加、表号按分号分割显示
![](http://pic002.cnblogs.com/images/2012/292243/2012092622451353.png)
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" });
![](http://pic002.cnblogs.com/images/2012/292243/2012092622504870.png)
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));
查询结果:
![](http://pic002.cnblogs.com/images/2012/292243/2012092622531815.png)
重点:
String.Join 方法
连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符。String.Join 方法 重载
载此成员。有关此成员的完整信息(包括语法、用法和示例),请单击重载列表中的相应名称。
重载列表
名称 | 说明 | |
---|---|---|
![]() ![]() ![]() | Join(String, IEnumerable<String>) | 串联类型为 String 的 IEnumerable<T> 构造集合的成员,其中在每个成员之间使用指定的分隔符。 |
![]() ![]() ![]() | Join<T>(String, IEnumerable<T>) | 串联字符串集合的成员,其中在每个成员之间使用指定的分隔符。 |
![]() ![]() ![]() | Join(String, Object[]) | 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。 |
![]() ![]() ![]() ![]() | Join(String, String[]) | 在指定 String 数组的每个元素之间连接指定的分隔符 String,从而产生单个连接的字符串。 |
![]() ![]() ![]() ![]() | Join(String, String[], Int32, Int32) | 在指定 String 数组的每个元素之间连接指定的分隔符 String,从而产生单个连接的字符串。 参数指定要使用的第一个数组元素和元素数。 |
相关文章推荐
- Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
- Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
- linq groupby分组,并且sum求和,最后排序Orderby 写法
- 数据记录的操作(insert,select,update,delete)函数和分组查询(group by),表连接(join on),嵌套查询(in)
- C#Datatable分组操作SUM求和Group by
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
- 组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
- 在entity framework 中使用 LINQ 对表进行左关联查询且group by 分组查询的示例,并且按小时分组查询时间段
- MYSQL实现将两个结果集合并,并且按照时间字段分组,其他字段的值求和
- mysql查询数据时,按照时间分组求和
- LinQ Coding -- (6)(Join之分组联接)
- linq对datatable group分组并求和
- MySQL分组然后取每个分组中按照某些字段排序的topN条数据
- SQL---DML---分组数据GROUP BY, HAVING子句总结
- sql server group by 分组带sum avg求和需要注意的一点
- sql的 group by 分组;linq的 group by 分组
- 数据库排名sql,group by 分组查询按照时间最大值
- sql 如何按时间排序 分组 并且取每组时间最大或最小的一条数据
- C#新手入门代码 LINQ 使用group将数据分组