asp.net中dataset删除重复数据的方法

作者:袖梨 2022-06-25

DataTable 中的数据如下:

id key value
1 a aa
1 a aa
2 b bb
2 b bb
3 c cc
3 c cc

现在想要让DataTable变成这个样子的

id key value
1 a aa
2 b bb
3 c cc


代码

void DeleteSameRow(DataSet ds)
  {
  ArrayList indexList = new ArrayList();
  // 找出待删除的行索引
  for (int i = 0; i < ds.Tables[0].Rows.Count-1; i++)
  {
  if (!IsContain(indexList, i))
  {
  for (int j = i + 1; j < ds.Tables[0].Rows.Count; j++)
  {
  if (ds.Tables[0].Rows[i][AccountInfo.Columns.AUName].ToString() == ds.Tables[0].Rows[j][AccountInfo.Columns.AUName].ToString())
  {
  indexList.Add(j);
  }
  }
  }
  }
  // 根据待删除索引列表删除行
  for (int i = indexList.Count - 1; i >= 0; i--)
  {
  int index = Convert.ToInt32(indexList[i]);
  ds.Tables[0].Rows.RemoveAt(index);
  }
  }
  bool IsContain(ArrayList indexList, int index)
  {
  for (int i = 0; i < indexList.Count; i++)
  {
  int tempIndex = Convert.ToInt32(indexList[i]);
  if (tempIndex == index)
  {
  return true;
  }
  }
  return false;
  }

再看一个实例

///

 
        /// 获取对固定列不重复的新DataTable 
        ///
 
        /// 含有重复数据的DataTable 
        /// 需要验证重复的列名 
        /// 新的DataTable,colName列不重复,表格式保持不变 
        private DataTable GetDistinctTable(DataTable dt,string colName) 
        { 
            DataView dv = dt.DefaultView; 
            DataTable dtCardNo = dv.ToTable(true, colName); 
            DataTable Pointdt = new DataTable(); 
            Pointdt = dv.ToTable(); 
            Pointdt.Clear(); 
            for (int i = 0; i < dtCardNo.Rows.Count; i  ) 
            { 
                DataRow dr = dt.Select(colName   "='"   dtCardNo.Rows[i][0].ToString()   "'")[0]; 
                Pointdt.Rows.Add(dr.ItemArray); 
            } 
            return Pointdt; 
        }

相关文章

精彩推荐