DataTable数据对比

news2025/1/11 8:18:22

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.coloradmin.cn/o/770506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Data JPA使用规则和审计的学习

一、引入依赖 完整的pom文件如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

idea 常用快捷键总结

IDEA常用快捷键总结 很多新手小白在使用IDEA进行代码编写的时候 对快捷键很感兴趣 这里泡泡给大家总结了一些常用的快捷键 希望能帮助到你 记得要收藏下来时常观看并且练习&#xff0c;才能熟练哦~ 1. 根据psvm或者main快速生成主函数 我们可以在类中输入psvm 或者main 然后I…

数据结构day4(2023.7.18)

一、Xmind整理&#xff1a; 链表的插入和删除&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;顺序表去重 33 22 22 11 11 i jfor(int i0;i<list->len-1;i){for(int ji1;j<len;j){if(list->data[i]list->data[j]){delete_by_sub(j,list); …

springmvc @RequestMapping注解中produces以及consumes属性的含义(转载请删除括号里的内容)

http协议基础知识 首先需要了解什么叫MediaType&#xff08;媒体类型&#xff09;&#xff1f; 通俗来说&#xff0c;在http协议中&#xff0c;用来表示传输内容的格式就是MediaType&#xff0c;比如text/html&#xff0c;application/json等&#xff0c;其中text代表介质&am…

win7系统电脑怎么在桌面上悬挂工作日程安排清单显示呢?

在现代快节奏的工作环境中&#xff0c;合理安排和管理工作日程是非常重要的。而在电脑桌面上悬挂工作日程安排清单显示&#xff0c;可以让我们随时了解自己的任务和工作进度&#xff0c;提高工作效率。那么&#xff0c;如何在Win7系统电脑上实现这一功能呢&#xff1f; 今天我…

第六章内存保护单元(Cortex-M7 Processor)

目录 第六章内存保护单元 6.1关于MPU 6.2MPU功能描述 6.3MPU编程器模型 第六章内存保护单元 介绍MPU (Memory Protection Unit)。它包含以下部分: 关于第6-2页的MPU。MPU功能描述见第6-3页。MPU程序员模型在第6-4页。 6.1关于MPU MPU是内存保护的可选组件。处理器支持标准…

【算法基础:数据结构】2.3 并查集

文章目录 并查集算法原理&#xff08;重要&#xff01;⭐&#xff09; 经典例题836. 合并集合&#xff08;重要&#xff01;模板&#xff01;⭐&#xff09;837. 连通块中点的数量&#xff08;维护连通块大小的并查集&#xff09;240. 食物链&#xff08;维护额外信息的并查集&…

【Spring | 应用上下文】

应用上下文 应用上下文和资源路径构造应用上下文构造ClassPathXmlApplicationContext实例 — 快捷方式使用通配符蚂蚁式图案类路径&#xff1a;前缀 应用上下文和资源路径 本节介绍如何使用资源创建应用程序上下文&#xff0c;包括使用 XML 的快捷方式、如何使用通配符以及其…

能耗管理平台保障用电的安全

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 6月12日&#xff0c;江苏盐城射阳县某民房起火&#xff0c;消防救援人员到场后&#xff0c;立即对火势进行扑救&#xff0c;经过20多分钟的处置&#xff0c;现场明火全部被扑灭&#xff0c;据了解&#xff0c;起火原因是电线老化短路引发…

Mac下makefile使用openssl库

程序报错 ./polipo.h:208:10: fatal error: openssl/ssl.h file not found 安装和查找openssl开发库 brew install brew --prefix openssl cd /opt/homebrew/opt/openssl3 cd lib cd pkgconfig 通过makefile配置include文件和lib文件 pkg-config方式 lib文件查找&#xf…

C# 同构字符串

205 同构字符串 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符…

Mysql教程(五):DQL学习

Mysql教程&#xff08;五&#xff09;&#xff1a;DQL学习 DQL Data Query Language 数据查询语言&#xff0c;用来查询数据库中表的记录 1 基本语法 DQL查询语句&#xff0c;语法结构如下&#xff1a; SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段列表 HAVI…

工时管理为何对项目如此重要?8Manage 带你读懂!

“时间就是金钱”&#xff0c;相信作为管理者都已经听腻了这话&#xff0c;但在项目管理中确实是真理。你要知道项目工时是会直接影响到项目费用成本的&#xff0c;不论项目工作是按小时还是按固定费用计费和付款&#xff0c;在一段工时内完成的工作越多&#xff0c;说明效率就…

myAgv的slam算法学习以及动态避障下篇

引言 在之前的一篇文章中有提到购入了一台myAGV&#xff0c;以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障&#xff0c;但我们深知&#xff0c;这只是机器人自主导航能力的基础。在实际应用场景中&#xff0c;机器人需要面对复…

【个人笔记】linux命令之ls

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考&#xff1a;为什么说&#xff1a;Linux中一切皆文件&#xff1f; ls命令 ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容…

宝塔 30分钟部署免费在线客服系统

客服系统发布以来&#xff0c;一直有朋友询问如何在宝塔面板中安装部署&#xff0c;开始我一直认为参考 Linux 版的安装教程就可以了&#xff0c;一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多&#xff0c;经过了解&#xff0c;我才知道宝塔面板的普及率有多高&…

什么是Spring Actuator?它有什么优势?

目录 一、什么是Spring Actuator 二、Spring Actuator的应用场景 三、Spring Actuator的优势 一、什么是Spring Actuator Spring Actuator是Spring Boot提供的一个功能强大的管理和监控工具&#xff0c;用于监控和管理Spring Boot应用程序。它可以提供对应用程序的运行时信…

java实现身份证号码校验

二代身份证为18位&#xff0c;前六位为籍贯信息&#xff0c;7至14位为生日&#xff0c;最后一位校验前17位号码是否正确 校验规则为&#xff1a;前17位每一位乘以一个固定权重并相加然后除以11得到的余数&#xff0c;判断余数是否和校验的数相等 代码实现&#xff08;支持15位…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

Enterprise:通过 App search 摄入数据

App Search 是 Elastic Enterprise Search 的一部分&#xff0c;Elastic Enterprise Search 是由 Elasticsearch 提供支持的内容搜索工具集合。 最初由 App Search 引入的一些功能&#xff08;例如网络爬虫&#xff09;现在可以直接通过企业搜索使用。 将这些功能与其他企业搜…