DataTable数据对比

这篇具有很好参考价值的文章主要介绍了DataTable数据对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DataTable数据对比


前言

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


一、计算DataTable差集

结构不同的情况

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

afsServiceOrder OrderId
0 order0
1 order1
2 order2
3 order3
4 order4

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"]);
            }

输出结果如下:
DataTable数据对比,C#,数据库,c#

结构相同的情况

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

afsServiceOrder OrderId
0 order0
1 order1
2 order2
3 order3
4 order4

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

afsServiceOrder OrderId
2 order2
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的数据如下:

GoodsId GoodsQty
6788123 50

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

GoodsId GoodsQty GoodsName
6788123 50 测试商品1
892211 90 测试商品2
ZH302021 10 测试商品3
2256411 60 测试商品4

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

GoodsId GoodsQty GoodsName
6788123 50 测试商品1

结构相同的情况

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

GoodsId GoodsQty
6788123 50

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

GoodsId GoodsQty
6788123 50
892211 90
ZH302021 10
2256411 60
var intersectUser = oldData.AsEnumerable().Intersect(newData, DataRowComparer.Default);

得到的结果:

GoodsId GoodsQty GoodsName
6788123 50 测试商品1

三、计算DataTable的并集合

这中情况用到的并不多就不过多介绍了,文章来源地址https://www.toymoban.com/news/detail-594667.html

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

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

到了这里,关于DataTable数据对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矢量数据库对比和选择指南

    矢量数据库是为实现高维矢量数据的高效存储、检索和相似性搜索而设计的。使用一种称为嵌入的过程,将向量数据表示为一个连续的、有意义的高维向量。 本文将研究存储/检索向量数据和执行相似性搜索的实用方法,在我们深入研究之前,首先先介绍矢量数据库的两个关

    2024年02月13日
    浏览(43)
  • 数据库数据加密的 4 种常见思路的对比

    应用层加解密方案 数据库前置处理方案 磁盘存取环节:透明数据加密 DB 后置处理 最近由于工作需要,我对欧洲的通用数据保护条例做了调研和学习,其中有非常重要的一点,也是常识性的一条,就是需要对用户的个人隐私数据做好加密存储,避免用户隐私明文数据泄露。

    2024年02月19日
    浏览(36)
  • 【文档数据库】ES和MongoDB的对比

    目录 1.由文档存储牵出的问题 2.什么是MongoDB? 3.ES和MongoDB的对比 本文或者说关于mongodb的这个系列文章的源头: 前面我们聊过了分布式链路追踪系统,在基于日志实现的分布式链路追踪的方式seluth+zipkin中为了防止数据丢失,需要将数据持久化。我们给出的是持久化进mysql中的

    2024年01月19日
    浏览(52)
  • 浅谈Redis特性和其他数据库的对比

    随着科技发展,数据库多样化,我们最近在做一款抖音的 直播小玩法,是微服务的,用到Redis。 Redis(全称为Remote Dictionary Server)是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代

    2024年02月13日
    浏览(39)
  • Elasticsearch 对比传统数据库:深入挖掘 Elasticsearch 的优势

    当你为项目选择数据库或搜索引擎时,了解每个选项的细微差别至关重要。 今天,我们将深入探讨 Elasticsearch 的优势,并探讨它与传统 SQL 和 NoSQL 数据库的比较。 Elasticsearch 以强大的 Apache Lucene 库为基础,是一个分布式搜索和分析引擎。 它以其速度、可扩展性以及快速索引

    2024年02月10日
    浏览(48)
  • 三种常用时序数据库对比调研-InfluxDB、Prometheus、IotDB

    时序数据治理是数据治理领域核心、打通IT与OT域数据链路,是工业物联网基石、大数据价值创造的关键、企业管理提升的发动机、是数字化转型的重要支撑。 工业企业在生产经营过程中,会运用物联网技术,采集大量的数据并进行实时处理,这些数据都是时序的,而且具有

    2024年02月22日
    浏览(45)
  • 4种多租户数据库设计方案对比及思考,一文全讲透

    多租户是SaaS(Software-as-a-Service)下的一个概念,意思为软件即服务,即通过网络提供软件服务。 SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作的实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用

    2023年04月16日
    浏览(55)
  • SQLite、MySQL、PostgreSQL3个关系数据库之间的对比

    关系数据模型 以行和列的表格形式组织数据,在数据库管理工具中占主导地位。今天还有其他数据模型,包括NoSQL和NewSQL,但是关系数据库管理系统(RDBMS)仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最广泛的开源RDBMS:SQLite、MySQL和PostgreSQL。具体来说,

    2024年02月11日
    浏览(54)
  • [AIGC] MySQL与PostgreSQL:两种流行的数据库系统的对比

    数据库是存储和查询数据的重要工具。在选择数据库时,两个经常被考虑的选项都是开源的:MySQL和PostgreSQL。这两个数据库都与许多应用程序一起使用,但它们在某些方面存在显著的不同。在本文中,我们将比较MySQL和PostgreSQL的一些关键特性。 MySQL是一种关系数据库管理系统

    2024年04月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包