我的C代码目前有问题;它在我的数据表中产生了重复的行,但在我的数据库中却没有。我一辈子都找不到是什么导致的,所以我试着创造出一个可行的办法,怎么可能也不可行。任何帮助都将不胜感激。
for (int i = 0; i < ds.Tables[0].Rows.Count; i ++ )
{
for(int n = 0; n< ds.Tables[0].Rows.Count; n++)
{
if (n == i)
{
//do nothing
}
else
{
if (ds.Tables[0].Rows[i] == ds.Tables[0].Rows[n])
{
ds.Tables[0].Rows[n].Delete();
}
}
}
}
最佳答案
我认为您的问题与equality comparer试图在更简单的poco类(一个只使用ad数据模型的小类)上映射datarow(很难按原样进行hanlde)有关。
然后使用GROUPBY或DISTINCT筛选数据。
下面是一个小例子:
波科班
public class DataRowModel
{
public object FirstCellData { get; set; }
public object SecondCellData { get; set; }
//... for every column in DataRow
public object LastCellData { get; set; }
public DataRowModel (DataRow row)
{
this.FirstCellData = row["FIELD_1"] ;
this.SecondCellData = row["FIELD_2"];
this.LastCellData = row["FIELD_3"];
}
}
实现唯一行的代码:
List<DataRowModel> rows = new List<DataRowModel> ();
foreach (DataRow row in ds.Tables[0].Rows)
rows.Add( new DataRowModel ( row) );
List<DataRowModel> uniqueRows = new List<DataRowModel> ();
foreach (var groupedRow in rows.GroupBy(x => new { x.FirstCellData, x.SecondCellData, /*.. for each cell..*/ x.LastCellData }))
uniqueRows.Add(groupedRow.First());
关于c# - C#从数据表中删除重复的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34345038/