- #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