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即可完成需求

相关推荐
红烧code18 小时前
【Rust GUI开发入门】编写一个本地音乐播放器(9. 制作设置面板)
开发语言·后端·rust
Predestination王瀞潞18 小时前
基础算法(Num012)
c语言·开发语言·算法·排序算法
NiKo_W18 小时前
C++ 反向迭代器模拟实现
开发语言·数据结构·c++·stl
dogRuning19 小时前
基于matlab的直流电机调速系统仿真分析-一套
开发语言·matlab
Matlab仿真实验室19 小时前
基于Matlab实现路径规划
开发语言·matlab·路径规划
努力也学不会java19 小时前
【Java并发】揭秘Lock体系 -- condition等待通知机制
java·开发语言·人工智能·机器学习·juc·condition
熊猫钓鱼>_>19 小时前
PySpark全面解析:大数据处理的Python利器
开发语言·python
拾忆,想起19 小时前
RabbitMQ死信交换机:消息的“流放之地“
开发语言·网络·分布式·后端·性能优化·rabbitmq
瑞士卷@19 小时前
JDBC进阶之连接池的配置(Druid与HikariCP)
java·开发语言·数据库
wjs202420 小时前
JSP 点击量统计
开发语言