关键词:
一个 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)),   查看详情