过滤table重复数据
本帖最后由 xiongxing318 于 2013-10-09 15:45:21 编辑 现有表A数据量大概2W左右,是从execl里面导入进来的。表B是从表A Copy来的。
A: 手机号码 发送内容 Index 错误信息
13800000001 200 1
13800000002 200 2
13800000002 15 3
13800000003 220 4
. .
. .
13800019999 550 19999
想要的结果:我要把手机号码重复的数据在表A里面移除掉,并且根据Index在B表里面指定行的错误信息的列填上备注表示该行是重复的。
ps:下面是我的代码
for (int i = dt.Rows.Count - 1; i > -1; i--)
{
bool bo = false;
DataRow row;
try
{
row = dt.Rows[i];
}
catch (Exception)
{
continue;
}
for (int j = i - 1; j > -1; j--)
{
DataRow row2 = dt.Rows[j];
if (row[0].ToString() == row2[0].ToString())//若该字段相同,则存在重复,将重复行号,手机号码加入dupList
{
bo = true;
failureCount++;
errdt.Select("Index='" + row2["Index"].ToString() + "'")[0]["错误信息"] = "重复(手机号码为" + row2["手机号码"].ToString() + "的所有短信不会发送!)";
dt.Rows.Remove(row2);
}
}
if (bo)//存在重复的记录
{
errdt.Select("Index='" + row["Index"].ToString() + "'")[0]["错误信息"] = "重复(手机号码为" + row["手机号码"].ToString() + "的所有短信不会发送!)";
failureCount++;
dt.Rows.Remove(row);
}
dt.AcceptChanges();
}
/// <summary>
/// 验证费用名称是否相同
/// </summary>
/// <param name="dgv">需要验证的dgv</param>
/// <returns>true为不同,false为相同</returns>
private static bool CheckCostNameIsLike(GHDataGridView dgv)
{
bool flag = true;
if (dgv.Rows.Count > 0)
{
DataTable dtCostName = (dgv.DataSource as DataTable).Copy();
DataView dv = new DataView(dtCostName);
if (dv.Count != dv.ToTable(true, "CostName").Rows.Count)
flag = false;
}
return flag;
}