我在遍历表时将一堆所谓的唯一项ID作为键存储,并将文件位置作为哈希表中的值存储.当我正在运行它时,我需要确保它们的键/位置对是唯一的或抛出错误消息.我有哈希表设置并加载值,但不知道要测试什么:
Hashtable check_for_duplicates = new HashTable();
foreach (object item in items)
{
if (check_for_duplicates.ContainsKey(item["ItemID"]) &&
//what goes here? Would be contains item["Path"] as the value for the key)
{
//throw error
}
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ett 11
试试这个:
Hashtable check_for_duplicates = new HashTable();
foreach (object item in items)
{
if (check_for_duplicates.ContainsKey(item["ItemID"]) &&
check_for_duplicates[item["ItemID"]].Equals(item["Path"]))
{
//throw error
}
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用的是.NET 2.0或更高版本,请考虑使用Generics,如下所示:
List<Item> items; // Filled somewhere else
// Filters out duplicates, but won't throw an error like you want.
HashSet<Item> dupeCheck = new HashSet<Item>(items);
items = dupeCheck.ToList();
Run Code Online (Sandbox Code Playgroud)
实际上,我刚刚检查过,看起来HashSet只是.NET 3.5.字典更适合2.0:
Dictionary<int, string> dupeCheck = new Dictionary<int, string>();
foreach(Item item in items) {
if(dupeCheck.ContainsKey(item.ItemID) &&
dupeCheck[item.ItemID].Equals(item.Path)) {
// throw error
}
else {
dupeCheck[item.ItemID] = item.Path;
}
}
Run Code Online (Sandbox Code Playgroud)