我的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/

10-11 02:43
查看更多