C#中分组循环的做法

在我们平时的开发需求中,一定遇到过这样的场景,你需要对一个datatable数据进行分组循环,像这一类的需求应该如何完成呢?

举个例子:

在这里我们在if里面对dt中KOorder,HostName,WERKS来进行分组后循环,应该如何做呢:

c 复制代码
 var groupedData = dt.AsEnumerable()
                     .GroupBy(dr => new {
                         KOorder = dr.Field<string>("KOorder"),
                         HostName = dr.Field<string>("HostName"),
                         WERKS = dr.Field<string>("WERKS")
                     })
                     .ToList();

 foreach (var group in groupedData)

这段代码中核心点在于groupedData 的赋值问题,在这里我们借助LINQ对dt进行分组数据的转换,

AsEnumerable(): 将DataTable转换为可LINQ操作的IEnumerable

GroupBy: 按三个字段组合创建分组键(匿名类型)

KOorder: 字符串类型的KOorder列值

HostName: 字符串类型的HostName列值

WERKS: 字符串类型的WERKS列值(通常是SAP系统中的工厂代码)

ToList(): 立即执行查询并将分组结果转换为内存中的List<IGrouping<...>>

那么就会转换为类List的分组数据,进行foreach即可完成需求

相关推荐
毕设源码-赖学姐4 分钟前
【开题答辩全过程】以 基于java的医院床位管理系统的设计与开发 为例,包含答辩的问题和答案
java·开发语言
lly2024067 分钟前
AJAX PHP 实践指南
开发语言
Never_Satisfied10 分钟前
在JavaScript / HTML中,cloneNode()方法详细指南
开发语言·javascript·html
huwei85312 分钟前
python设计通用表格类 带右键菜单
开发语言·windows·python
Remember_99314 分钟前
深入理解 Java String 类:从基础原理到高级应用
java·开发语言·spring·spring cloud·eclipse·tomcat
—Qeyser16 分钟前
Flutter组件 - BottomNavigationBar 底部导航栏
开发语言·javascript·flutter
666HZ66619 分钟前
数据结构3.0 栈、队列和数组
开发语言·数据结构·算法
bing.shao19 分钟前
Golang 在OPC领域的应用
开发语言·后端·golang
a努力。30 分钟前
得物Java面试被问:Netty的ByteBuf引用计数和内存释放
java·开发语言·分布式·python·面试·职场和发展
zyxzyx4933 分钟前
大模型本地化部署实战:从服务器性能调优到低成本落地全攻略
服务器·开发语言·php