如何获取对固定列不重复的新DataTable2015-04-23 csdn博客 衣舞晨风
#region 获取对固定列不重复的新DataTable/// <summary>/// 获取对固定列不重复的新DataTable/// </summary>/// <param name="dt">含有重复数据的DataTable</param>/// <param name="colName">需要验证重复的列名</param>/// <returns>新的DataTable,colName列不重复,表格式保持不变</returns>private DataTable GetDistinctTable(DataTable dt, string colName){if (dt.Rows.Count == 0 || dt.Rows.Count == 1){WriteFile("GetDistinctTable传入dt的行数小于等于1" + "
", logName, out outMessage);return dt;}DataView dv = dt.DefaultView;//dv过滤dv中的重复列名DataTable dtCardNo = dv.ToTable(true, colName);DataTable Pointdt = new DataTable();//ToTable()根据现有 DataView 中的行,创建并返回一个新的 DataTable。//输出表与输入表包含相同的列Pointdt = dv.ToTable();Pointdt.Clear();for (int i = 0; i < dtCardNo.Rows.Count; i++){try{//dr取的是Select返回的DataRow[]中的第一条数据//如果dtCardNo.Rows[i][0].ToString()中没有值会报数组超出索引界限的错误if (!string.IsNullOrEmpty(dtCardNo.Rows[i][0].ToString())){ DataRow dr = dt.Select(colName + "="" + dtCardNo.Rows[i][0].ToString() + """)[0];//DataRow.ItemArray通过一个数组来获取或设置此行的所有值Pointdt.Rows.Add(dr.ItemArray);}}catch (Exception ee){ //可以将错误写入日志文件}}return Pointdt;}#endregion