c#从数据表中删除重复的行

时间:2015-12-17 21:58:51

标签: c# database datatable duplicates

我目前的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();

            }
        }

    }
}

1 个答案:

答案 0 :(得分:2)

我认为你的问题与等式比较有关,试图在更简单的POCO类(一个只使用广告数据模型的小类)上映射DataRow(很难按原样)。

然后使用group by或distinct来过滤数据。

这里有一个小例子:

POCO课程

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());