日期:2014-05-19  浏览次数:20808 次

如何削除DataTable中的重復數據
我在一個DataTable中合并了若干張表的數據,這些表結構是相同的,問題是合并之后的table中的字段會有重復值,現在要削除重復值,因為數據量很大,請教大家有沒有高效的方法

------解决方案--------------------
// 过滤前的数据表
DataTable table = ...;

// 过滤后的数据表
DataTable tagetTable = table.Clone();

// 注意:sFormater中的分隔符用数据表中不会出现的字符,现假定为 ", "
// 根据运行效率自己选定用何方法

// 方法1
string sFormater = "{0}, {1} ";
string sKeys = null;
string sPrevKeys = null;
// Key项目排序
DataRow[] rows = table.Select( " ", "Key0, Key1 ");
foreach (DataRow row in rows)
{
sKeys = string.Format(sFormater, row[ "Key0 "].ToString(), row[ "Key1 "].ToString());
if (!sKeys.Equals(sPrevKeys))
{
tagetTable.ImportRow(row);
}
sPrevKeys = sKeys;
}

// 方法2
string sSelectFormater = "{0}, {1} ";
foreach (DataRow row in table.Rows)
{
if (tagetTable.Select(string.Format(sSelectFormater, "Key0 ", "Key1 ")).Length == 0)
{
tagetTable.ImportRow(row);
}
}

table = tagetTable;