C# 通用DataTable 拆分小表
一个简单的使用遍历的方式进行DataTable 的拆分
private static List<DataTable> DataTableSplite(DataTable dt, int modcounts) { List<DataTable> list = new List<DataTable>(); int counts = dt.Rows.Count / modcounts; /// 取整数个数 int mod = dt.Rows.Count % modcounts; /// 余数 if (mod > 0) { int index = 0; /// 处理拆分倍数的部分 for (int i = 0; i < counts; i++) { DataTable dt1 = dt.Clone(); dt1.TableName = "count" + i; for (int j = index * modcounts; j < (index + 1) * modcounts; j++) { DataRow newrow = dt.NewRow(); DataRow row1 = dt.Rows[j]; newrow["name"] = row1["name"]; newrow["age"] = row1["age"]; dt1.Rows.Add(newrow.ItemArray); } index++; list.Add(dt1); } /// 处理余数部分的组合 DataTable dt2 = dt.Clone(); dt2.TableName = "modetable"; for (int i = counts * modcounts; i < dt.Rows.Count; i++) { DataRow newrow = dt.NewRow(); DataRow row1 = dt.Rows[i]; newrow["name"] = row1["name"]; newrow["age"] = row1["age"]; dt2.Rows.Add(newrow.ItemArray); } list.Add(dt2); } else { /// 余数为0 的情况处理 int index = 0; for (int i = 0; i < counts; i++) { DataTable dt1 = dt.Clone(); dt1.TableName = "modetable"; for (int j = index * modcounts; j < (index + 1) * modcounts; j++) { DataRow newrow = dt.NewRow(); DataRow row1 = dt.Rows[j]; newrow["name"] = row1["name"]; newrow["age"] = row1["age"]; dt1.Rows.Add(newrow.ItemArray); } index++; list.Add(dt1); } } return list; }
实现的方式比较简单,同时也可以使用linq 的方式进行
代码如下:
private static List<DataTable> DataTableSplite2(DataTable dt, int modcounts) { int counts = dt.Rows.Count / modcounts; /// 取整数个数 List<DataTable> list = new List<DataTable>(); /// int index = 0; for (int i = 0; i < counts + 1; i++) { list.Add(dt.AsEnumerable().Skip(index * modcounts).Take(modcounts).CopyToDataTable()); index++; } return list; }
代码更少。
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)