在一个大DataTable的基础上去除重复数据,分别创建2个小DataTable,省去多次数据库连接,提高效率,加快程序运行

DataTable tab = new DataTable();

tab = DBUtil.GetDataSet(strCmd, "TESTA.V_YHJ_VIP_WX_XSMX").Tables[0];

创建一个小表:

DataView view = new DataView(tab);

DataTable orderTable = view.ToTable(true, "ORDERDATE", "MEMBER_CODE", "INV_NUM", "ZJE", "ZFJE", "SELL_QTY", "SHOP_CODE");

在基于orderTable 的str_Inv_Num ,生成更小的一个表

for (int i = 0; i < orderTable.Rows.Count; i++)

{

for (int j = 0; j < orderTable.Columns.Count; j++)

{

if (j == 0)

{

str_INV_DATE = orderTable.Rows[i][j].ToString().Trim();

//shop_code = tab.Rows[i][j].ToString();

}

if (j == 1)

str_MemberCode = orderTable.Rows[i][j].ToString().Trim();

if (j == 2)

{

str_Inv_Num = orderTable.Rows[i][j].ToString().Trim();

subInv_Num = str_Inv_Num;

}

if (j == 3)

Inv_Totalamt = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());

if (j == 4)

str_INV_AMT = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());

if (j == 5)

int_Sell_Qty = Convert.ToInt32(orderTable.Rows[i][j].ToString().Trim());

if (j == 6)

str_Shop_Code = tab.Rows[i][j].ToString().Trim();

}

if (str_old_Inv_Num.Trim()!=str_Inv_Num.Trim()) //去除某个会员有2个以上单据,并且每个单据有多件销售货品时的重复记录。目前第一个单号的第一件货品,就会把货品信息都列出来,如果一个单子有多件货品,不加此句就会出现重复数据。导致结果不对。

{

view.RowFilter = "INV_NUM=‘" + str_Inv_Num+"‘";

orderDetailTable = view.ToTable(true, "INV_NUM", "SKU", "C_SHORT_DE", "SELL_QTY", "SERIAL_NO");

List<CofflineOrderDetail> lCofflineOrderDetail = DBUtil.GetList<CofflineOrderDetail>(orderDetailTable);//返回泛型列表

//OracleAccess.logger.Debug(" CAL_getOfflineOrder 子 table :" + str_vip.ToString() + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString() +

//    "," + str_INV_DATE + "," + str_MemberCode + "," + str_Inv_Num + "," + Inv_Totalamt + "," + str_INV_AMT + "," + int_Sell_Qty + "," + str_Shop_Code +

//     DBUtil.ToJson(subtab));

listorder.Add(new COfflineOrder(str_INV_DATE, str_MemberCode, str_Inv_Num, Inv_Totalamt, str_INV_AMT, str_Shop_Code, int_Sell_Qty, lCofflineOrderDetail));

view.RowFilter = "";

str_old_Inv_Num = str_Inv_Num;

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-04 18:37:59

在一个大DataTable的基础上去除重复数据,分别创建2个小DataTable,省去多次数据库连接,提高效率,加快程序运行的相关文章

mysql 去除重复数据 语句

纠结的过程: mysql> select * from role group by role_name,deleted; +---------+-----------+---------+ | role_id | role_name | deleted | +---------+-----------+---------+ | 2 | xue | 12 | | 1 | zhao | 12 | | 3 | zhao | 13 | +---------+-----------+---------+

按天去除重复数据,为0则取0,否则取最大的那个值

测试数据: mysql> select * from t2; +----+--------+---------------------+------------+ | id | userid | inputDate | infoStatus | +----+--------+---------------------+------------+ | 1 | 1 | 2014-07-11 00:00:00 | 20013 | | 2 | 1 | 2014-07-11 00:00:00 | 0 |

List集合去除重复数据

[转自]Java中List集合去除重复数据的方法 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remove(j); }

MySQL忽略已重复数据强制创建唯一索引

常规方法: CREATE UNIQUE INDEX `idx_m2b_product_photo_pid_sort` ON `m2b`.`m2b_product_photo` (pid, sort) COMMENT '' ALGORITHM DEFAULT LOCK DEFAULT; 忽略已重复数据强制创建唯一索引的方法: ALTER IGNORE TABLE `m2b_product_photo` ADD UNIQUE `idx_m2b_product_photo_pid_sort` (`pi

sql去除重复数据

1,采用存储过程添加测试数据 CREATE PROCEDURE NewProcedure()BEGINDECLARE i INT;SET i=1;WHILE i<50000 DO INSERT INTO user_new (id,name,phone,sex) VALUES (i,i,i,i); SET i = i + 1;END WHILE;END; 两次插入,修改后一次存储过程的id取值,于是得到了name,phone,sex重复的5W条数据(时间有限,未操作更大数量) 2,数据去重 常见方

JAVA数组去除重复数据

一.用List集合实现   int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重复后的list集合"+list); 输出结果是

数据库去除重复数据

小标记一下,数据库大量重复数据去除 下面是一个根据重复的name  移除的 create table temp select max(id) as id  from table1 group by name ;//name分组  拿到最大id  保存到临时表 delete table1 where id not in(select id from temp); 以上仅供参考,其他的比葫芦画瓢

list去除重复数据

在java里面要想去除list中的重复数据可以使用两种方式实现: 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remov

List&lt;T&gt; 去除重复数据

//原数据 List<T_Model> tmpListAll=new List<T_Model>(); //去除集合中重复数据后 List<T_Model> tmpList = tmpListAll.Distinct(new AutoFilterParmsCompare()).ToList(); /// <summary> /// 比较器 /// </summary> public class AutoFilterParmsCompare : E