Словарь C # ContainsValue поиск по атрибуту объекта - PullRequest
0 голосов
/ 07 января 2010

у меня Dictionary<long, Location> PostalCodes.

Когда я добавляю новые элементы в этот словарь, я хочу найти этот словарь, и если Location.PostalCode нет в этом словаре, я хочу вставить его. В противном случае я хочу пропустить это. Итак, нужно знать, есть ли почтовый индекс в коллекции. Не могу использовать его в качестве ключа.

Как это сделать?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 07 января 2010

Звучит так, будто вам нужен другой словарь, который использует в качестве ключа - в основном двунаправленная карта. По крайней мере, если вы хотите, чтобы это работало хорошо. Вы можете просто просмотреть каждое значение на карте, но это будет операция O (n).

(В качестве альтернативы, если вы делаете это один раз, просто создайте HashSet<Location> для всех местоположений, которые вы используете. На самом деле вам не нужно long по звукам для обратный поиск.)

4 голосов
/ 07 января 2010

Вы можете попробовать:

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

Но при большом количестве данных это может замедлиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...