从数据表中删除重复条目的最佳方法

从数据表中删除重复条目的最佳方法是什么?

删除重复

public DataTable RemoveDuplicateRows(DataTable dTable, string colName) { Hashtable hTable = new Hashtable(); ArrayList duplicateList = new ArrayList(); //Add list of all the unique item value to hashtable, which stores combination of key, value pair. //And add duplicate item value in arraylist. foreach (DataRow drow in dTable.Rows) { if (hTable.Contains(drow[colName])) duplicateList.Add(drow); else hTable.Add(drow[colName], string.Empty); } //Removing a list of duplicate items from datatable. foreach (DataRow dRow in duplicateList) dTable.Rows.Remove(dRow); //Datatable which contains unique records will be return as output. return dTable; } 

这里下面的链接

http://www.dotnetspider.com/resources/4535-Remove-duplicate-records-from-table.aspx

http://www.dotnetspark.com/kb/94-remove-duplicate-rows-value-from-datatable.aspx

用于删除列中的重复项

http://dotnetguts.blogspot.com/2007/02/removing-duplicate-records-from.html

在当前工作的DataTable上执行dtEmp

 DataTable distinctTable = dtEmp.DefaultView.ToTable( /*distinct*/ true); 

这真好。

这篇文章是关于在多个列的基础上从数据表中获取差异行。

 Public coid removeDuplicatesRows(DataTable dt) { DataTable uniqueCols = dt.DefaultView.ToTable(true, "RNORFQNo", "ManufacturerPartNo", "RNORFQId", "ItemId", "RNONo", "Quantity", "NSNNo", "UOMName", "MOQ", "ItemDescription"); } 

你需要调用这个方法,你需要为数据表赋值。 在上面的代码中,我们将RNORFQNo,PartNo,RFQ id,ItemId,RNONo,QUantity,NSNNO,UOMName,MOQ和项目描述作为Column列出来,我们需要不同的值。

一个简单的方法是:

  var newDt= dt.AsEnumerable() .GroupBy(x => x.Field<int>("ColumnName")) .Select(y => y.First()) .CopyToDataTable(); 

使用Linq GroupBy方法有一个简单的方法。

 var duplicateValues = dt.AsEnumerable() .GroupBy(row => row[0]) .Where(group => (group.Count() == 1 || group.Count() > 1)) .Select(g => g.Key); foreach (var d in duplicateValues) Console.WriteLine(d); 
  • 更多信息,请访问: http : //www.dotnetlines.com/Blogs/tabid/85/EntryId/49/Remove-duplicate-rows-from-a-DataTable-using-LINQ.aspx

下面是使用AsEnumerable().Distinct()的简单而快速的方法AsEnumerable().Distinct()

 private DataTable RemoveDuplicatesRecords(DataTable dt) { //Returns just 5 unique rows var UniqueRows = dt.AsEnumerable().Distinct(DataRowComparer.Default); DataTable dt2 = UniqueRows.CopyToDataTable(); return dt2; } 

点击访问我的博客了解更多详情

  /* To eliminate Duplicate rows */ private void RemoveDuplicates(DataTable dt) { if (dt.Rows.Count > 0) { for (int i = dt.Rows.Count - 1; i >= 0; i--) { if (i == 0) { break; } for (int j = i - 1; j >= 0; j--) { if (Convert.ToInt32(dt.Rows[i]["ID"]) == Convert.ToInt32(dt.Rows[j]["ID"]) && dt.Rows[i]["Name"].ToString() == dt.Rows[j]["Name"].ToString()) { dt.Rows[i].Delete(); break; } } } dt.AcceptChanges(); } }