DataTable数据对比

DataTable数据对比

文章目录

  • DataTable数据对比
  • 前言
  • 一、计算DataTable差集
    • 结构不同的情况
    • 结构相同的情况
  • 二、计算DataTable交集
    • 结构不同的情况
    • 结构相同的情况
  • 三、计算DataTable的并集合
    • 两个DaTable结构相同的情况计算并集


前言

开发中我们经常会出现查询数据库后返回DataTable的情况,那么DataTable中常用的一些操作阁下又了解多少呢,例如:两个结构不同DataTable怎么找出他们俩之间的交集和差集。


一、计算DataTable差集

结构不同的情况

示例:这里的情况是我们要过滤掉老数据取到新数据,其中:
dt:是查询到的所有数据。
dt的数据:

afsServiceOrderOrderId
0order0
1order1
2order2
3order3
4order4

oldData:里是已经处理过的数据,也就是需要从”dt“中剔除的数据。
oldData的数据:

afsServiceOrder
2

示例代码如下:

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.Field<string>("afsServiceOrder")).Contains(r.Field<string>("afsServiceOrder")) select r;dt = WaiteData.CopyToDataTable();foreach (DataRow item in dt.Rows){Console.WriteLine(item["afsServiceOrder"]);Console.WriteLine(item["OrderId"]);}

输出结果如下:
在这里插入图片描述

结构相同的情况

dt:是查询到的所有数据。
dt的数据:

afsServiceOrderOrderId
0order0
1order1
2order2
3order3
4order4

oldData:里是已经处理过的数据,也就是需要从”dt“中剔除的数据。
oldData的数据:

afsServiceOrderOrderId
2order2
var WaiteData = dt.AsEnumerable().Except(oldData.AsEnumerable(), DataRowComparer.Default);  

输出的结果和上面是一样的

二、计算DataTable交集

结构不同的情况

示例:这里的情况是库存同步,需要找出新的库存数据和老的库存数据共有的商品库存信息然后进行Update操作。

var waitUpdata=from r in oldData.AsEnumerable()  where  (from rr in newData.AsEnumerable() select rr.Field<string>("GoodsId ")).Contains(  r.Field<string>("GoodsId "))  select r; 

newData:新的库存数据
这里newData的数据如下:

GoodsIdGoodsQty
678812350

oldData:数据库老的库存数据
这里是oldData的数据如下:

GoodsIdGoodsQtyGoodsName
678812350测试商品1
89221190测试商品2
ZH30202110测试商品3
225641160测试商品4

这里过滤后得到的数据如下:

GoodsIdGoodsQtyGoodsName
678812350测试商品1

结构相同的情况

newData:新的库存数据
这里newData的数据如下:

GoodsIdGoodsQty
678812350

oldData:数据库老的库存数据
这里oldData的数据如下:

GoodsIdGoodsQty
678812350
89221190
ZH30202110
225641160
var intersectUser = oldData.AsEnumerable().Intersect(newData, DataRowComparer.Default);

得到的结果:

GoodsIdGoodsQtyGoodsName
678812350测试商品1

三、计算DataTable的并集合

这中情况用到的并不多就不过多介绍了,

两个DaTable结构相同的情况计算并集

IEnumerable AllData = Data1.AsEnumerable().Union(Data2.AsEnumerable(), DataRowComparer.Default);
//转换为DataTable
DataTable Datas= AllData.CopyToDataTable();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解GPT技术发展脉络

文章目录 前言关于本篇的分享内容大语言模型大模型语言模型 百花齐放TransformerAuto-RegressiveResnetLayer-NormMaskScaled Dot-Product AttentionMulti-Head AttenionSelf-AttentionPositional Encoding关于并行计算关于长程依赖Transformer演化 GPT SeriesGPT-1GPT-2GPT-3 …

文档翻译成中文怎么弄?今天分享文档翻译免费要怎么弄

有一天&#xff0c;小华来到了一个外国小镇。然而&#xff0c;他发现镇上的路牌、菜单和旅游手册都是用外语写的&#xff0c;让他感到非常困扰。他不知道该去哪里游玩&#xff0c;也无法理解当地的文化和历史。他非常喜欢这个小镇的风景&#xff0c;但是他无法读懂他们这里的一…

04.MySQL——用户管理

用户管理 用户管理的价值 用户 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中 use mysql;select host,user,authentication_string from user;host&#xff1a; 表示这个用户可以从哪个主机登陆&#xff0c;如果是localhost&#xff0c;表示只能从…

Redis的4种分布式限流算法

限流 服务系统流量多,的确是一件好事,但是如果过载,把系统打挂了,那大家都要吃席了。 所以,在各种大促活动之前,要对系统进行压测,评估整个系统的峰值QPS,要做一些限流的设置,超过一定阈值,就拒绝处理或者延后处理,避免把系统打挂的情况出现。 限流和熔断有什么区…

包的使用及其创建

文章目录 前言类名冲突完整的类路径创建包导入类包总结 前言 java语言中&#xff0c;包在整个管理过程中发挥了重要的作用。使用包&#xff0c;可以有效地管理繁多的类文件&#xff0c;解决了类名重复的问题。在类中应用包和权限修饰符&#xff0c;可以控制他人对类成员的方法的…

智安网络|保护数据资产:不同行业下的数据安全建设策略

在当今数字化时代&#xff0c;数据安全已经成为各行各业无法忽视的重要议题。保持良好网络卫生习惯并及时了解不断变化的网络威胁是企业中每个人的责任。企业、政府机构、医疗机构、金融机构以及其他组织和行业都面临着日益复杂和频繁的网络安全威胁。为了有效应对这些威胁&…

小白入门C#编写MVC登录小案例

一、C#编写MVC登录小案例 &#x1f680;1. 新建MVC项目。 &#x1f680;2. 在Models文件夹下创建一个User类&#xff0c;包含登录所需要的用户名和密码属性。 namespace MvcLogin.Models {public class User{public string UserName{get; set;}public string Password{get;se…

超声医疗高压功率放大器ATA-4315技术参数

超声波检查或超声诊断&#xff0c;是一种非侵入性的医学检查方法&#xff0c;它利用了声波的高频振动来观察和评估人体内部的器官和组织。它基于不同密度和组织结构中传播的原理。通过将ultrasound(超声波)传递到身体的特定区域&#xff0c;并记录反射回来的声波&#xff0c;我…

Python教程(3)——python开发工具vscode的下载与安装

Python的开发工具有很多款&#xff0c;很多都是非常好用的&#xff0c;其中vscode作为其中一款Python的开发工具&#xff0c;是非常轻量级的&#xff0c;今天我们来介绍一下vs code的下载与安装。 vscode的下载与安装 首先需要到vscode的官网&#xff0c;这个谷歌或者百度一下…

C语言 —— 浮点类型详解及 IEEE754 规定

【C语言趣味教程】(3) 浮点类型&#xff1a;单精度浮点数 | 双精度浮点型 | IEEE754 标准 &#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x1f4ad; 写在前面&#xff1a;这是…

RocketMQ环境搭建

环境搭建 环境准备 下载地址: https://downloads.apache.org/rocketmq/4.9.5/安装 上传至服务器 mkdir /usr/soft #上传至此目录/usr/softmkdir /usr/soft 解压 cd /usr/soft unzip rocketmq-all-4.9.5-bin-release.zip移动 mkdir /usr/local/rocketmq cd /usr/soft mv r…

chatglm微调

chatGML 看到 【【官方教程】ChatGLM-6B 微调&#xff1a;P-Tuning&#xff0c;LoRA&#xff0c;Full parameter】 【精准空降到 15:27】 https://www.bilibili.com/video/BV1fd4y1Z7Y5/?share_sourcecopy_web&vd_sourceaa8c13cff97f0454ee41e1f609a655f1&t927 记得看…