中国视觉设计网站,单页网站seo如何优化,那个网站百度收录好,网站开发公司怎么接单子DataTable数据对比 文章目录 DataTable数据对比前言一、计算DataTable差集结构不同的情况结构相同的情况 二、计算DataTable交集结构不同的情况结构相同的情况 三、计算DataTable的并集合两个DaTable结构相同的情况计算并集 前言
开发中我们经常会出现查询数据库后返回DataTab…DataTable数据对比 文章目录 DataTable数据对比前言一、计算DataTable差集结构不同的情况结构相同的情况 二、计算DataTable交集结构不同的情况结构相同的情况 三、计算DataTable的并集合两个DaTable结构相同的情况计算并集 前言
开发中我们经常会出现查询数据库后返回DataTable的情况那么DataTable中常用的一些操作阁下又了解多少呢例如两个结构不同DataTable怎么找出他们俩之间的交集和差集。 一、计算DataTable差集
结构不同的情况
示例这里的情况是我们要过滤掉老数据取到新数据其中 dt是查询到的所有数据。 dt的数据
afsServiceOrderOrderId0order01order12order23order34order4
oldData里是已经处理过的数据也就是需要从”dt“中剔除的数据。 oldData的数据
afsServiceOrder2
示例代码如下
DataTable dt new DataTable();dt.Columns.Add(afsServiceOrder);dt.Columns.Add(OrderId);for (int i 0; i 5; i){DataRow dr dt.NewRow();dr[afsServiceOrder] i;dr[OrderId] orderid i;dt.Rows.Add(dr);}DataTable oldData new DataTable();oldData.Columns.Add(afsServiceOrder);DataRow dr1 oldData.NewRow();dr1[afsServiceOrder] 2;oldData.Rows.Add(dr1);var WaiteData from r in dt.AsEnumerable() where !(from rr in oldData.AsEnumerable() select rr.Fieldstring(afsServiceOrder)).Contains(r.Fieldstring(afsServiceOrder)) select r;dt WaiteData.CopyToDataTable();foreach (DataRow item in dt.Rows){Console.WriteLine(item[afsServiceOrder]);Console.WriteLine(item[OrderId]);}输出结果如下
结构相同的情况
dt是查询到的所有数据。 dt的数据
afsServiceOrderOrderId0order01order12order23order34order4
oldData里是已经处理过的数据也就是需要从”dt“中剔除的数据。 oldData的数据
afsServiceOrderOrderId2order2
var WaiteData dt.AsEnumerable().Except(oldData.AsEnumerable(), DataRowComparer.Default); 输出的结果和上面是一样的
二、计算DataTable交集
结构不同的情况
示例这里的情况是库存同步需要找出新的库存数据和老的库存数据共有的商品库存信息然后进行Update操作。
var waitUpdatafrom r in oldData.AsEnumerable() where (from rr in newData.AsEnumerable() select rr.Fieldstring(GoodsId )).Contains( r.Fieldstring(GoodsId )) select r; newData新的库存数据 这里newData的数据如下
GoodsIdGoodsQty678812350
oldData数据库老的库存数据 这里是oldData的数据如下
GoodsIdGoodsQtyGoodsName678812350测试商品189221190测试商品2ZH30202110测试商品3225641160测试商品4
这里过滤后得到的数据如下
GoodsIdGoodsQtyGoodsName678812350测试商品1
结构相同的情况
newData新的库存数据 这里newData的数据如下
GoodsIdGoodsQty678812350
oldData数据库老的库存数据 这里oldData的数据如下
GoodsIdGoodsQty67881235089221190ZH30202110225641160
var intersectUser oldData.AsEnumerable().Intersect(newData, DataRowComparer.Default);得到的结果
GoodsIdGoodsQtyGoodsName678812350测试商品1
三、计算DataTable的并集合
这中情况用到的并不多就不过多介绍了
两个DaTable结构相同的情况计算并集
IEnumerable AllData Data1.AsEnumerable().Union(Data2.AsEnumerable(), DataRowComparer.Default);
//转换为DataTable
DataTable Datas AllData.CopyToDataTable();