C#Dictionary ContainsValue按对象属性查找

时间:2010-01-07 18:03:07

标签: c# .net collections dictionary

我有Dictionary<long, Location> PostalCodes

当我向此词典添加新元素时,我想查找此词典,如果Location.PostalCode不在此词典中,我想插入它。否则我想跳过它。因此,需要知道PostalCode是否已经在Collection中。不能用它作为关键。

怎么做?

感谢。

2 个答案:

答案 0 :(得分:5)

听起来你需要另一个字典 使用它作为关键字 - 基本上是双向地图。至少,如果你希望它表现良好的话。你可以只查看地图中的每个值,但这将是一个O(n)操作。

(或者,如果您这样做一次,只需为您正在使用的所有位置创建一个HashSet<Location>。实际上您不需要long,而是通过它的声音反向查找的目的。)

答案 1 :(得分:4)

您可以尝试:

if(PostalCodes.Values.All(l=>l.PostalCode != location.PostalCode))
{
    PostalCodes.Add(key /*what is it*/, location);
}

但是这可能会因大量数据而变慢。