#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" + "\r\n", 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
linqs实现
http://blog.csdn.net/jiankunking/article/details/42749663