试试这个:
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
}
}
此外,如果您使用的是 .NET 2.0 或更高版本,请考虑使用泛型,如下所示:
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();
实际上,我刚刚检查过,看起来 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;
}
}