项目要求,对上传的Excel数据进行重复验证.一般都是双层for循环,这样很慢.利用Hashtable一个键对应一个值的特性,做重复验证.
代码如下:
/// <summary>
/// 数据重复验证
/// </summary>
/// <param name="dt">数据</param>
/// <returns>重复信息</returns>
public string RepeatVerify(DataTable dt)
{
string ErrorList = "";
Hashtable ht = new Hashtable();
for (int i = 0; i < dt.Rows.Count; i++)
{
int Column = i + 1;
if (!string.IsNullOrEmpty(dt.Rows[i][0].ToString()) && !string.IsNullOrEmpty(dt.Rows[i][6].ToString()))
{
string strVisible = dt.Rows[i][0].ToString() + dt.Rows[i][6].ToString();//要验证的字符串
int Key = strVisible.GetHashCode();//生成唯一键值
if (ht.ContainsKey(Key))
{
ErrorList += "第" + ht[Key] + "行和第" + Column + "行数据重复//n";
}
else
{
ht.Add(Key, Column);
}
}
}
ht.Clear();//清空Hashtable
return ErrorList;
}