服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#去除DataTable重复数据的三种方法

C#去除DataTable重复数据的三种方法

2022-11-02 11:25无忧岛主 C#

这篇文章主要介绍了C#去除DataTable重复数据的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

业务需求

最近做一个把源数据库的数据批次导出到目标数据库。源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库。

其中要避免目标库插入重复数据。这重复数据可能是源数据库本身就有重复数据,还有就是已经插入避免重复插入。

过滤自身重复数据解决方案

第一种:采用DataView.ToTable()方法

  • DataView.ToTable 方法
  • .NET Framework 2.0

其根据现有 DataView 中的行,创建并返回一个新的DataTable

重载列表

名称 说明
DataView.ToTable () 根据现有 DataView 中的行,创建并返回一个新的 DataTable。

由 .NET Compact Framework 支持。

DataView.ToTable (String) 根据现有 DataView 中的行,创建并返回一个新的 DataTable。

由 .NET Compact Framework 支持。

DataView.ToTable (Boolean, String[]) 根据现有 DataView 中的行,创建并返回一个新的 DataTable。

由 .NET Compact Framework 支持。

DataView.ToTable (String, Boolean, String[]) 根据现有 DataView 中的行,创建并返回一个新的 DataTable。

由 .NET Compact Framework 支持。


实例代码

?
1
2
3
4
5
6
public static DataTable Distinct(DataTable dt, string[] filedNames)
 {
  DataView dv = dt.DefaultView;
  DataTable DistTable = dv.ToTable("Dist", true, filedNames);
  return DistTable;
 }

第二种方法:循环遍历+DataTable.Select()

利用for循环遍历DataTable的数据行,利用DataTable.Select 方法判断是否重复,如果重复,则利用DataTable.Rows.RemoveAt(Index)删除重复的那一行。

具体看代码。

代码示例

?
1
2
3
4
5
6
7
8
9
10
11
12
public DataTable GetDistinctSelf(DataTable SourceDt, string filedName)
 {
for (int i = SourceDt.Rows.Count - 2; i > 0; i--)
  {
   DataRow[] rows = SourceDt.Select(string.Format("{0}='{1}'", filedName, SourceDt.Rows[i][filedName]));
   if (rows.Length > 1)
   {
    SourceDt.Rows.RemoveAt(i);
   }
  }
  return SourceDt; 
 }

第三种方法

利用双循环遍历(不推荐)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public DataTable GetDistinctSelf(DataTable SourceDt, string filedName)
 {
  for (int i = SourceDt.Rows.Count - 2; i > 0; i--)
  {
   string title = SourceDt.Rows[0][filedName].ToString();
   for (int j = i + 1; j > 0; i--)
   {
    if (SourceDt.Rows[j][filedName].ToString() == title)
    {
     SourceDt.Rows.RemoveAt(i);
 
    }
   }
 
  }
  return SourceDt;
  }

到此这篇关于C#去除DataTable重复数据的三种方法的文章就介绍到这了,更多相关C#去除DataTable重复数据内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/sunxi/p/4767577.html

延伸 · 阅读

精彩推荐
  • C#C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

    C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

    这篇文章主要给大家总结介绍了关于C#中如何将MongoDB->RunCommand结果映射到业务类的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一...

    波斯码5182022-02-23
  • C#C#中把任意类型的泛型集合转换成SQLXML数据格式的实例

    C#中把任意类型的泛型集合转换成SQLXML数据格式的实例

    本文主要分享了C#中把任意类型的泛型集合转换成SQLXML数据格式的实例代码。具有很好的参考价值,需要的朋友可以看下...

    弎吩锺熱℃3772021-12-14
  • C#c# ArrayList的使用方法小总结

    c# ArrayList的使用方法小总结

    arraylist是接口list的实现类,所以在使用过程中比较推荐使用list接口来实现,arraylist在程序开发过程中应用非常广泛,接下来,脚本之家的小编给大家总结...

    C#教程网8142021-10-25
  • C#Unity实现俄罗斯方块游戏

    Unity实现俄罗斯方块游戏

    这篇文章主要为大家详细介绍了Unity实现俄罗斯方块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    LLLLL__9842022-09-15
  • C#C#生成随机数功能示例

    C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    lx_3278@1265302021-12-18
  • C#C#获取网页源代码的方法

    C#获取网页源代码的方法

    这篇文章主要介绍了C#获取网页源代码的方法,涉及C#基于自定义函数读取网页html代码的方法,具有一定参考借鉴价值,需要的朋友可以参考下...

    C#教程网9602021-10-26
  • C#C#实现在启动目录创建快捷方式的方法

    C#实现在启动目录创建快捷方式的方法

    这篇文章主要介绍了C#实现在启动目录创建快捷方式的方法,涉及C#快捷方式的创建技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧7872021-10-25
  • C#C#小数点格式化用法小结

    C#小数点格式化用法小结

    这篇文章主要介绍了C#小数点格式化用法,结合实例形式分析了C#小数点格式化运算的常用函数与相关使用技巧,需要的朋友可以参考下...

    Quber9932021-12-02