取两个DataTable的交集,删除重复数据

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

/// <summary>

        /// 取两个DataTable的交集,删除重复数据

        /// </summary>

        /// <param name="sourceDataTable">源DataTable</param>

        /// <param name="targetDataTable">目标DataTable</param>

        /// <param name="primaryKey">两个表的主键</param>

        /// <returns>合并后的表</returns>

        public
static DataTable Merge(DataTable sourceDataTable, DataTable targetDataTable, string
primaryKey)

        {

            if
(sourceDataTable != null
|| targetDataTable != null
|| !sourceDataTable.Equals(targetDataTable))

            {

                sourceDataTable.PrimaryKey = new
DataColumn[] { sourceDataTable.Columns[primaryKey] };

                DataTable dt = targetDataTable.Copy();

                foreach
(DataRow tRow in
dt.Rows)

                {

                    //拒绝自上次调用 System.Data.DataRow.AcceptChanges() 以来对该行进行的所有更改。

                    //因为行状态为DataRowState.Deleted时无法访问ItemArray的值

                    tRow.RejectChanges();

                    //在加载数据时关闭通知、索引维护和约束。

                    sourceDataTable.BeginLoadData();

                    //查找和更新特定行。如果找不到任何匹配行,则使用给定值创建新行。

                    DataRow temp = sourceDataTable.LoadDataRow(tRow.ItemArray, true);

                    sourceDataTable.EndLoadData();

                    sourceDataTable.Rows.Remove(temp);

                }

            }

            sourceDataTable.AcceptChanges();

            return
sourceDataTable;

        }

  

取两个DataTable的交集,删除重复数据,布布扣,bubuko.com

时间: 2024-10-09 21:42:34

取两个DataTable的交集,删除重复数据的相关文章

mysql 删除重复数据

如题:mysql 数据库删除重复数据 因为是mysql 所以其他数据哭的命令在mysql 中是不能使用的.不要想当然的使用sql 脚本 delete from table1 where field1 in (select field1 from table1 group by field1 having count(field1) > 1) and rowid not in (select min(rowid) from table1 group by field1 having count(f

Excel删除重复数据及用公式筛选重复项并标记颜色突出显示

当表格记录比较多时,常常会有重复数据,而重复记录往往只希望保存一条,因此需要把多余的删除:在 Excel 中,删除重复数据有两种方法,一种是用“删除重复数据”删除,另一种是用“高级筛选”删除:其中前者删除重复数据后会在表格末尾留下空行,而后者不会.如果只想查看重复数据而不必删除,可以给重复数据标记颜色突出显示,这样会一目了然.另外,还可以用公式统计每条重复数据有几条或筛选出重复数据.以下是Excel删除重复数据及用公式筛选重复项并标记颜色的具体操作方法,操作中所用版本为 Excel 2016.

mysql如何删除重复数据并保留ID最大的数据

题:有一张test表,里面含有三个字段id,name,sex. 问:如何查询重复数据? select name,sex,count(*) from test group by name,sex HAVING count(*)>1. 问:如何删除重复数据并保留ID最大的数据? delete a from test a join (select name,sex,count(*) ,max(id) as id from test group by name,sex HAVING count(*)>

SQL语句删除重复数据

1.如表中没有主键,先添加自动增长主键 alter table 表名 add 列名 int identity (1,1) primary key 2.删除重复数据 delete from 表名 where id not in (select min(id) from 表名 group by id)

mysql 删除重复数据的sql语句

CREATE TABLE tmp AS SELECT id FROM get_review_url WHERE (no,title,name,content) IN (SELECT no,title,name,content FROM get_review_url GROUP BY no,title,name,content HAVING COUNT(*) > 1) AND id NOT IN (SELECT MIN(id) FROM get_review_url GROUP BY no,tit

MYSQL删除重复数据

delete from co_jobinformation cwhere c.name in (select cc.name from co_jobinformation cc group by  cc.name   having count(cc.name) > 1)and rowid not in (select min(rowid) from co_jobinformation e group by e.name having count(e.name )>1) 之前在oracle数据库

MSSQL如何在没有主键的表中删除重复数据

为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create database testdb use testdb ; go create table DupsNoPK (Col1 int Null, Col2 char(5) Null ); go insert DupsNoPK(Col1,Col2) Values(1,'abc'), (2,'abc'), (2,'abc'), (2,'abc'), (7,'xyz'), (7,'xyz'); 为了验证表确实有重

Mysql开发技巧之删除重复数据

Mysql利用联表查询和分组来删除重复数据 //删除表中重复的id,保留最大的id mysql> select * from user; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | | 5 | a | | 6 | a | | 7 | c | | 8 | d | +----+------+ 8 rows in set (0.08 sec) mysql> delete a fro

Oracle 删除重复数据

DELETE FROM tb E WHERE E.ROWID > (SELECT MIN(X.ROWID)                    FROM tb X                   WHERE X.APR_BSS_ID = E.APR_BSS_ID                   AND X.ID=E.ID                   AND X.NAME=E.NAME                 ); Oracle 删除重复数据