从一个excel文件导入数据到dataset,里面有重复的行,
利用ds.table[0].priamykey = new datacolumn[] { ds.table[0].column[0],ds.table[0].column[2]};
加入主键报错重复行,
请问如何利用这个错误信息,获得是哪些行重复?

解决方案 »

  1.   

    public DataTable SelectDistinct(DataTable SourceTable, string FieldName)
          {
                 DataTable dt = new DataTable();
                for (Int32 i = 0; i < SourceTable.Columns.Count; i++)
               {
                    string fieldName=SourceTable.Columns[i].Caption;
                    dt.Columns.Add(fieldName, SourceTable.Columns[fieldName].DataType);
               }
               DataRow dataRow = dt.NewRow();
                foreach (DataRow dr in SourceTable.Select("", FieldName))
                {
                    if (dataRow == null || !(ColumnEqual(dataRow[FieldName], dr[FieldName])))
                   {
                       dataRow=dr;
                       DataRow row = dt.NewRow();
                        for (int i = 0; i < dataRow.ItemArray.Length; i++)
                      {
                            row[i] = dataRow[i];
                        }
                        dt.Rows.Add(row);
                   }
               }
               return dt;
            }
    参考
      

  2.   

    用Default view, DataView会自动在主键上创建一个索引的。
    你也可以查rowerror属性,不过这样性能很低
      

  3.   


    利用报错来获取重复行,直接,方便快截.在表中比较肯定是可以比较出来,写个两层循环或者
    利用ds.select 之类的,不够爽...
      

  4.   

    最近在學linq,不知道linq能不能實現COUNT