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 > )
{
int index = ;
/// 处理拆分倍数的部分
for (int i = ; i < counts; i++)
{ DataTable dt1 = dt.Clone();
dt1.TableName = "count" + i;
for (int j = index * modcounts; j < (index + ) * 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 = ;
for (int i = ; i < counts; i++)
{ DataTable dt1 = dt.Clone();
dt1.TableName = "modetable";
for (int j = index * modcounts; j < (index + ) * 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 = ;
for (int i = ; i < counts + ; i++)
{
list.Add(dt.AsEnumerable().Skip(index * modcounts).Take(modcounts).CopyToDataTable()); index++;
}
return list; }
代码更少。
C# 通用DataTable 拆分小表的更多相关文章
- 小表驱动大表, 兼论exists和in
给出两个表,A和B,A和B表的数据量, 当A小于B时,用exists select * from A where exists (select * from B where A.id=B.id) ex ...
- Datatable.Compute小技巧
在个人版机房重构的过程中,大家最发愁的一件事无非就是上下机,结账和报表.那么在结账的过程中,最发愁的是否就数计算日结账单的数据和周结账的数据.还记得在第一遍机房收费系统的过程中用的是for 循环,但是 ...
- EntityFramework 实体拆分和表拆分
之前有人问过 EF 如何进行实体拆分和表拆分?我记得当时认为不可能,理由忘记了,后来又有人发了一段配置截图,发现原来是可以的,不记录的东西容易忘掉,关于 EF 实体拆分和表拆分,下面是自己的一些整理. ...
- 并行HASH JOIN小表广播问题
SQL语句: SELECT /*+parallel(t1 16)*/ T1.DATA_DATE, T1.ACCT_NO, T1.ACCT_ORD, T1.ACCT_NO_PK, T1.ACCT_BAL ...
- OLAP 大表和小表并行hash join
一个表50MB 一个表10GB 50M表做驱动表,放在PGA里 这时候慢在对对 10g 的全表扫描 对10个G扫描块 需要开并行 我有这样一个算法 一个进程 读 50mb 8进程 来 扫描 10gb ...
- 十分钟释疑Oracle中“小表超慢”之谜(SQL调优/SQL优化)
前几天,一个用户找到我,说查一个小表的时候非常慢,我问有多慢,他说最快也得半个小时才能出结果,有时干脆不出结果,我说小表多大,他说就几十兆,有点疑惑,让他帮忙获取了相关信息,一看就明白了,原来所谓的小 ...
- 查询优化--小表驱动大表(In,Exists区别)
Mysql 系列文章主页 =============== 本文将以真实例子来讲解小表驱动大表(In,Exists区别) 1 准备数据 1.1 创建表.函数.存储过程 参照 这篇(调用函数和存储过程批 ...
- 【Spark调优】小表join大表数据倾斜解决方案
[使用场景] 对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(例如几百MB或者1~2GB),比较适用此方案. [解决方案] ...
- 6.2 小表驱动大表(exists的应用)
1. 优化原则:小表驱动大表,即小数据集驱动大数据集. select * from A where id in (select id from B) 等价于: for select id from B ...
随机推荐
- R——启程——豆瓣影评分析
专业统计的我,自然免不了学R的,今天仔细看了这篇教程(感谢学姐的推荐@喜欢算法的女青年),就学着用R仿照着做一个,作为R语言学习的起点吧. 影评数据是用python爬的,之后会在python爬虫系列补 ...
- Milk
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) ...
- 重学STM32----(一)
在这学习stm32半年的时间中,虽然明显的感觉到自己在进步,但是还是发现学习方法的错误.由于急功近利的性格,在学习stm32之初,我选择了最简单的办法,用库函数来写程序,而且也由于我这急功近利的性格, ...
- Xcode 7在支持ipad的设备中需要支持分屏!
http://sandy.int.ru/xcode/xcode7zaizhichiipaddeshebeizhongyaozhichifenping.html 在更新APP的时候发现ERROR ITM ...
- CSS 实现:元素相对于文档水平垂直居中
[要求]:如何用 CSS 实现水平/垂直居中一个元素(相对于文档) <body> <div class="content"></div> < ...
- 帝国cms 灵动标签
[e:loop={栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序}] <a href="<?=$bqsr[titleurl]?>&quo ...
- Hadoop 在ubuntu系统上的搭建[图解]
前言 本文介绍如何在Ubuntu Kylin操作系统上搭建Hadoop平台. 配置 1. 操作系统: Ubuntu Kylin 14.04 2. 编程语言: JDK 1.8 3. 通信协议: SSH ...
- 240. Search a 2D Matrix II
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- html5的特性
1.简化的语法更简单的doctype声明是HTML5里众多新特征之一.现在你只需要写,这就行了.HTML5的语法兼容HTML4和XHTML1,但不兼容SGML. 2. 一个替代Flash的新”canv ...
- 数据库实验一 SQL Service的安装
SQL 2014 安装需要 Microsoft .Net Framework 3.5框架 win 8.1 Microsoft .Net Framework 3.5框架安装教程:点我 安装图文教程:点我 ...