#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