当前位置:首页 » 净水方式 » datatable过滤重复行

datatable过滤重复行

发布时间: 2020-12-30 23:17:46

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

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

Ⅱ DataTable判断是否有重复数据

1.DatatTable 某个字段是否重复
DataTable dtTableDisinit = (DataTable)this.c1TrueDBGrid1.DataSource;
DataView dv = new DataView(dtTableDisinit);
if (dv.Count != dv.ToTable(true, "PMD_SingProct").Rows.Count)
{
Common.showMessageInfo("网格中存在重复的品番!");
return;
}

2.数组中去重复的数据专和判断一属个数组中是否有重复的数据
string[] strSing = this.PM_CollectionGoods.Text.ToString().Trim().Split(',');
string[] strDis = strSing.Distinct().ToArray();
if (strSing.Length != strDis.Length)
{
Common.showMessageInfo("数组中存在重复的数据");
return;
}

Ⅲ 关于如何删除DataTable中的重复行

以前合作做一个程序的时候,由于数据库设计原因。让我碰到了一个比较棘手的问题,就是最后我的数据Table里面存在了一行或多行重复行,那么怎么删除这些重复行了。从网上找了许多材料,还是用了一个最笨的办法,把Table的行检索一遍把重复的行删除掉(在微软的社区里也有这样的例子)。最坏的情况时间复杂度为o(行X列)。如果数据量比较小的话,这样的性能还可以忍受。但是数据量大的话。其速度也就不言而喻了。 检索部分代码如下: 1public DataTable SelectDistinct(DataTable SourceTable, string FieldName) 2 { 3 DataTable dt =new DataTable(); 4for (Int32 i =0; i < SourceTable.Columns.Count; i++) 5 { 6string fieldName=SourceTable.Columns[i].Caption; 7 dt.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType); 8 } 910 DataRow dataRow = dt.NewRow(); 11foreach (DataRow dr in SourceTable.Select("", FieldName)) 12 { 13if (dataRow ==null||!(ColumnEqual(dataRow[FieldName], dr[FieldName]))) 14 { 15 dataRow=dr; 16 DataRow row = dt.NewRow(); 17for (int i =0; i < dataRow.ItemArray.Length; i++) 18 { 19 row[i] = dataRow[i]; 20 } 21 dt.Rows.Add(row); 22 } 23 } 24return dt; 25 } 上面的代码性能低。就不再多做剖析了。 下面来看看.Net提供的一个方法。个人认为还是比没有的好。只是多了一个转的过程起码自己不用再像上面所使用方法一行一行来找了。好了,言归正传。看下面的代码 privatevoid ShowDataViewSource() { //Table DataTable dataTable =new DataTable("dataTable"); DataColumn dataColumn =new DataColumn("dataColumn"); DataColumn dataColumn2 =new DataColumn("dataType"); dataTable.Columns.Add(dataColumn); dataTable.Columns.Add(dataColumn2); DataRow dataRow; for (int i =0; i <10; i++) { dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="item "+ i; if (i <7) { dataRow["dataType"] ="1"; } else { dataRow["dataType"] ="2"; } dataTable.Rows.Add(dataRow); } //将Table填充到DataView并添加新的数据 DataView dataView =new DataView(dataTable); //添加n行数据 dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="World"; dataRow["dataType"] ="3"; dataTable.Rows.Add(dataRow); //在这里添加重复数据 dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="martin"; dataRow["dataType"] ="1"; dataTable.Rows.Add(dataRow); dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="martin"; dataRow["dataType"] ="1"; dataTable.Rows.Add(dataRow); dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="martin"; dataRow["dataType"] ="1"; dataTable.Rows.Add(dataRow); dataRow = dataTable.NewRow(); dataRow["dataColumn"] ="martin"; dataRow["dataType"] ="1"; dataTable.Rows.Add(dataRow); //第一个数据源 dg1.DataSource = dataView; //去掉重复行的DataView DataView myDataView =new DataView(dataTable); string[] strComuns ={ "dataColumn", "dataType" }; dg2.DataSource = myDataView.ToTable(true, strComuns); } 主要做的工作就是把存在重复行数据的DataTable送给Dataview.然后使用DataView类的一个ToTable方法中的一个重载方法。就是上面用的,一共有两个参数,第一个bool类型参数就是指定装换成DataTable后是否保留重复行,第二个参数是一个字符串数组,用来指定转换成 DataTable后保留原有表中的哪些字段。字段名不区分大小写。

Ⅳ 如何去掉DataTable中的重复行

dsTopSearch.Merge(dal.GetTopSearch(keyword,condition));}return dsTopSearch.Tables[0].DefaultView.ToTable(true, "ID","Name","Author","Publisher","PublishDate","TypeName","Price","SalePrice","SavePrice","Rebate","ImagePath","ContentIntro");}先把DataTable转成DataView,再通来过DataView.ToTable()转回自DataTable,ToTable()方法中有一个重载可以轻松消除重复行. 注:该重载的第二个参数为要保存的字段名.

Ⅳ DataTable 根据某列Select 出重复数据,保留不重复的数据

你是要动态判断列吗?
select * from table where 列名 = 值
这个行不行?
还要根据每列找出不重复的值
select distinct 列名 from table

Ⅵ C# 处理DataTable 重复数据

你可以用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();
}
}
}

Ⅶ DataTable中如何去除重复的项

1 数据库直接去除重复
select distinct * from 表名
去除了重复行distinct

2 对 DataTable直接进行操作
DataTable dt=db.GetDt("select * from 表名"); //获得datatable
DataView dv = new DataView(dt); //虚拟视图吧,我这么认为
DataTable dt2 = dv.ToTable(true, "name,age,hobby");
这个时候 dt2就是去除了重复的行了

Ⅷ DataTable如何去除重复的行

两种方法
1 数据库直接去除重复
select distinct * from 表名
去除了重复行distinct

2 对 DataTable直接进行操作
DataTable dt=db.GetDt("select * from 表名"); //获得datatable
DataView dv = new DataView(dt); //虚拟视图内吧,我这么认容为
DataTable dt2 = dv.ToTable(true, "name,age,hobby");
这个时候 dt2就是去除了重复的行了
解释一下
dv.ToTable(true, "name,age,hobby");
第一个参数,true 去除重复,false 不去除
第二个参数, 看意思能明白,你需要显示的字段,我这里显示"name,age,hobby"

Ⅸ C# winform 去掉datatable里面的重复数据问题

两种方法
1 数据抄库直接袭去除重复
select distinct * from 表名
去除了重复行distinct

2 对 DataTable直接进行操作
DataTable dt=db.GetDt("select * from 表名"); //获得datatable
DataView dv = new DataView(dt); //虚拟视图吧,我这么认为
DataTable dt2 = dv.ToTable(true, "name,age,hobby");
这个时候 dt2就是去除了重复的行了
解释一下
dv.ToTable(true, "name,age,hobby");
第一个参数,true 去除重复,false 不去除
第二个参数, 看意思能明白,你需要显示的字段,我这里显示"name,age,hobby"

Ⅹ 怎样将DataTable中的重复数据筛选出来

vargroupByResult=dataTable.Rows.Cast<DataRow>().GroupBy<DataRow,string>(dr=>dr["name"].ToString());
foreach(varrowsingroupByResult)
{
if(rows.Count()>1)
{
//以来name为筛选源条件的数据存在多条

}
}

热点内容
丁度巴拉斯情人电影推荐 发布:2024-08-19 09:13:07 浏览:886
类似深水的露点电影 发布:2024-08-19 09:10:12 浏览:80
《消失的眼角膜》2电影 发布:2024-08-19 08:34:43 浏览:878
私人影院什么电影好看 发布:2024-08-19 08:33:32 浏览:593
干 B 发布:2024-08-19 08:30:21 浏览:910
夜晚看片网站 发布:2024-08-19 08:20:59 浏览:440
台湾男同电影《越界》 发布:2024-08-19 08:04:35 浏览:290
看电影选座位追女孩 发布:2024-08-19 07:54:42 浏览:975
日本a级爱情 发布:2024-08-19 07:30:38 浏览:832
生活中的玛丽类似电影 发布:2024-08-19 07:26:46 浏览:239