从数据表中获取不同的行失败

时间:2017-03-09 09:44:52

标签: c# ado.net

我正在尝试根据列值从列表中获取不同的行(列名Id) 我的主数据表是这样的 enter image description here 我希望所有行都使用不同的Id,我的代码就像这样

         DataTable distinctDt = dt.DefaultView.ToTable(true, "Id", "ProductName", 
    "ProductDescription","ProductCategory_Id", "Fair_Id", "Price","ImagePath", 
"FairName", "FairLogo", "StartDate", "EndDate", "picId");

但是这仍然会返回重复的行。我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

您使用的方法在此方案中没用,因为您需要基于唯一列ID's的所有列,以下是执行此操作的方法:

    public static 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;
    }

只需将您的MasterDatatable和列名称传递给此方法,它就会为您提供所需的内容。

它经过测试代码并且运行良好。看到工作。 Execution

希望它有所帮助!