取两个数据结构相同的datatable的差集

来源:互联网 发布:单片机频率计 编辑:程序博客网 时间:2024/06/14 16:51

1.问题描述

今天做一个数据维护功能,数据库中有一张表A,需要定期维护Excel文件中的数据到这张表,Excel文件的数据与表A的数据关系为:Excel包含A;

需要做的工作是,过滤掉A表中已有的数据,剩下的就是需要更新的数据了,然后把两个数据结构的差集插入到表A中。

2.解决办法

将Excel中的数据通过OleDb读取到DataTable中,记为dt1;将表A中的数据读取到DataTable中,记为dt2;创建一个DataTable对象dt3用来接受差集。然后将dt3插入到表A。

代码如下:

DataTable dt3 = new DataTable();//接受差集的dt3          dt3.Columns.Add("HPHM", typeof(string));//初始化dt3的数据结构,与dt1和dt2保持一致          dt3.Columns.Add("HPZL", typeof(string));          dt3.Columns.Add("CLLX", typeof(string));          dt3.Columns.Add("SYXZ", typeof(string));          dt3.Columns.Add("SYR", typeof(string));                                   foreach (DataRow row in dt1.Rows)//遍历excel数据集{DataRow[] rows = dt2.Select("HPHM='" + row[0].ToString().Trim() + "' and HPZL='" + row[1].ToString().Trim() + "'");//查询excel数据集是否存在于表A,如果存在赋值给DataRow集合        if (rows.Length == 0)//判断如果DataRow.Length为0,即该行excel数据不存在于表A中,就插入到dt3        {        dt3.Rows.Add(row[0], row[1], row[2], row[3], row[4]);        }}