c#处理datatable重复数据

author author     2023-04-02     171

关键词:

一个 datatable 里面 假如有A B C D 4列 10W行数据 要求 C列所有行相同的数据只保留一行,其他的删除掉,给出一个算法10秒内处理完成

你可以用HashSet<T>来存储已存在的行 检索速度会快很多 代码如下 不知道你的机子什么配置 我的机子Debug模式100000行数据 用了232毫秒using System;
using System.Data;
using System.Collections.Generic;
using System.Diagnostics;

namespace ConsoleApplication1

class Program

static void Main(string[] args)

DataTable dataTable = new DataTable();
dataTable.Columns.AddRange(new DataColumn[]
new DataColumn("A"),
new DataColumn("B"),
new DataColumn("C"),
new DataColumn("D")
);
for (int i = 0; i < 50000; i++)

dataTable.Rows.Add(new object[] 0, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + i.ToString(), 0 );
dataTable.Rows.Add(new object[] 0, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + (50000 - i).ToString(), 0 );

Stopwatch stopwatch = new Stopwatch();
stopwatch.Reset();
stopwatch.Start();
Console.WriteLine("DataTable行数:0", dataTable.Rows.Count);
HashSet<string> hash = new HashSet<string>();//.NET 3.0以上使用
//Dictionary<string, int> dic = new Dictionary<string, int>();//.NET 2.0可以用这个
for (int i = 0; i < dataTable.Rows.Count; i++)

//if (dic.ContainsKey(dataTable.Rows[i][2] as string))//.NET 2.0
//
// dic.Add(dataTable.Rows[i][2] as string, 0);
//
if (!hash.Contains(dataTable.Rows[i][2] as string))

hash.Add(dataTable.Rows[i][2] as string);

else

dataTable.Rows.RemoveAt(i);
i--;


stopwatch.Stop();
Console.WriteLine("用时:0毫秒", stopwatch.ElapsedMilliseconds);
Console.WriteLine("DataTable行数:0", dataTable.Rows.Count);
Console.ReadKey();


参考技术A 如果有id列是标识列:DELETE FROM table1 t1
WHERE t1.id> (SELECT min(t2.id) FROM table t2 WHERE t1.C=t2.C);因为最小的就一条记录,把比最小的都删除掉,结果就只剩一条记录了。

c#中datatable绑定combobox显示数据有重复怎么处理?取值时未用sql语句。

将datatable进行重复值过滤。第一种方法循环每一行进行重复值删除第二种方法比较简单直接用datatable的内部方法dataviewdv=datatable。defultviewdv.todatatable(true,你想要的列)--true表示是否过滤重复项参考技术A取值就有重复显示就有重复... 查看详情

c#中datatable如何去除重复数据

参考技术A两种方法1数据库直接去除重复selectdistinct*from表名去除了重复行distinct2对DataTable直接进行操作DataTabledt=db.GetDt("select*from表名");//获得datatableDataViewdv=newDataView(dt);//虚拟视图吧,我这么认为Dat 查看详情

如何将旧的 mdb-database 导入 C# DataTable [重复]

】如何将旧的mdb-database导入C#DataTable[重复]【英文标题】:Howtoimportoldmdb-databaseintoC#DataTable[duplicate]【发布时间】:2021-09-1220:51:41【问题描述】:我有一个非常旧的mdb数据库。我想将数据库中的所有表加载到C#DataTable中。如果可能... 查看详情

C# DataTable.Rows.Clear() 不清除行[重复]

】C#DataTable.Rows.Clear()不清除行[重复]【英文标题】:C#DataTable.Rows.Clear()notclearingrows[duplicate]【发布时间】:2019-03-0621:52:44【问题描述】:我有一个包含许多表的DataSetdsComponents,它们都只在内存中,我不将它们与任何数据库同步。... 查看详情

如何在 C# 中将 DataTable 转换为通用列表 [重复]

】如何在C#中将DataTable转换为通用列表[重复]【英文标题】:HowtoConvertDataTabletoGenericListinC#[duplicate]【发布时间】:2016-12-1608:54:08【问题描述】:我需要将C#DataTable转换为通用集合列表DataTableColumnsRespectively1.EmpId(thisisIntDataType)2.EmpNam... 查看详情

c#遍历datatable比较textbox中的值,,是不是重复

如图,,,怎么比较textbox和datatable中的值是否重复,,如果不重复的话就添加进去,,,,假设textbox的数值对应到DataTable的列COL1上DataRow[]rows=dt.Select("COL1="+textbox.Text.Trim())如果是字符型用("COL1='"+textbox.Text.Trim()+"'"... 查看详情

c#中同一个datatable中的如何把重复的记录合并起来,

...;"+dr["姓名"].ToString()+"'");//查找dt2的重复数据if(drs.Length>0)drs["数量"]=drs["数量"]+dr["数量"];//将数量累加elsedt2.newrow;//dt2里边new一个新行,把数据加进去dt2即为所求。写的有点马虎,没... 查看详情

在c#中进行datatable操作:根据列数据插入一些汇总行

...三级,二级,一级大类的汇总,如果一个产品类别中出现重复,只要汇总一行。 查看详情

怎么读取datatable某一列的值?然后用c#代码判断是不是有重复数据?linq还是怎么做呢?

public static void cs()                               System.Data.DataTable dt = new System.Data.DataTable();&... 查看详情

DataTable to List<Class> 在c#中没有for循环[重复]

】DataTabletoList<Class>在c#中没有for循环[重复]【英文标题】:DataTabletoList<Class>withoutforLoopinc#[duplicate]【发布时间】:2019-11-2401:35:45【问题描述】:这是我的代码部分:(带有Partial类)partialclassProgramstaticDataTabledt;Program()Initi... 查看详情

datatable中怎样将重复的数据合并

...g[]"name");//取出distinct的name列,然后相加用一个方法处理写个方法就行循环原来的datatable的每一行,传入name值,取出遇到的name是当前值的列的值相加参考技术A不用sql啊,那先copy表datatable作为新的合并后的数据表然后foreach原... 查看详情

如何使用 C#、ASP.NET、SQL Server 端处理实现 jQuery DataTables 插件?

】如何使用C#、ASP.NET、SQLServer端处理实现jQueryDataTables插件?【英文标题】:HowcanIimplementjQueryDataTablespluginusingC#,ASP.NET,SQLServersideprocessing?【发布时间】:2012-09-1718:20:48【问题描述】:如何使用C#、ASP.NET、带有ajax和web服务的SQLServer... 查看详情

c#将linq数据集转换为datatable

C#将LINQ数据集转换为Datatable1.方法一:(测试可用)//通过一个公共类将LINQ数据集转换为datatablepublic DataTable LINQToDataTable<T>(IEnumerable<T>varlist){    DataTable dtReturn= ne 查看详情

C# DataTable 更新 Access 数据库

】C#DataTable更新Access数据库【英文标题】:C#DataTableupdateAccessDatabase【发布时间】:2014-01-0814:46:27【问题描述】:如何将DataTable保存到文件中。accdb(Access)现有一个?我使用了以下代码,但它不起作用:using(OleDbConnectionoledbConnection=n... 查看详情

c#使用datatable进行数据绑定

    privatevoidbtnReport2_Click(objectsender,EventArgse)          //绑定数据到下拉列表      DataBasedb=newDataBase();      db.Open();      DataTabledt   =db.GetTableBySql("select*fromsupp where[Ty 查看详情

SQL Server消息输出上的C#句柄[重复]

...示在消息窗口中的消息。例如在运行数据库备份时:10%已处理。20%已处理。等等……为数据库“Sample”处理了1722608个页面,文件1上的文件“ 查看详情

C#异常处理失败[重复]

】C#异常处理失败[重复]【英文标题】:C#ExceptionHandlingFallThrough[duplicate]【发布时间】:2010-12-1801:43:54【问题描述】:可能重复:CatchmultipleExceptionsatonce?在C#中有什么方法可以轻松实现以下伪代码:try...catch(ExceptionTypeA,ExceptionTypeB,E... 查看详情

c#用datatable实现groupby数据统计

1、用两层循环计算,前提条件是数据已经按分组的列排好序的。DataTable dt = new DataTable();dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)),    查看详情