Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据

简介: 转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html 今天在使用linq处理一下需求时碰到一点小问题,特此记录。   需求:     按照品名相同的进行汇总,数量相加、表号按分号分割显示   1、组织...

转载: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));
复制代码

查询结果:

 

目录
相关文章
|
前端开发 搜索推荐
typora 基本使用和更换typora的主题样式
typora 基本使用和更换typora的主题样式
311 0
|
9月前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
5943 119
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
SQL 数据挖掘 大数据
如何在 SQL Server 中使用 `OFFSET` 和 `FETCH`
【8月更文挑战第10天】
2841 8
|
SQL 存储 缓存
Apache Doris 2.1.6 版本正式发布
2.1.6 版本在 Lakehouse、异步物化视图、半结构化数据管理持续升级改进,同时在查询优化器、执行引擎、存储管理、数据导入与导出以及权限管理等方面完成了若干修复
224 6
|
存储 JSON 缓存
Vite 官方文档速通(下)
Vite 官方文档速通(下)
472 0
|
安全 Java Nacos
『MSE』阿里云中“间”力量MSE-Nacos
注册配置中心 MSE-Nacos (以下简称 MSE-Nacos),即 Nacos 的企业版,开箱即用的 Nacos 云服务,对 Nacos 内核进行企业级稳定性加固,故障自动检测及恢复、多可用区容灾、推空保护等特性,具有风险管理能力,全局持续分析并管理集群风险;企业级安全基于 RAM 鉴权体系,可构建细粒度的安全控制能力,集成阿里云 KMS 提供配置加密能力,帮企业更安全地使用 Nacos 服务
64508 10
『MSE』阿里云中“间”力量MSE-Nacos
|
存储 .NET C#
C# LINQ 详解 From Where Select Group Into OrderBy Let Join
目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. 概述     LINQ的全称是Language Integrated Query,中文译成“语言集成查询”。
2337 0
|
大数据 Java Linux
大数据Nifi环境搭建
大数据Nifi环境搭建
450 0
|
程序员 uml
如何用语雀画板,轻松画出架构图?
无须任何第三方工具,用语雀画板,轻松画出架构图。
如何用语雀画板,轻松画出架构图?