C #: словарь значений в преобразование хэш-набора - PullRequest
8 голосов
/ 05 июля 2010

Пожалуйста, предложите кратчайший способ конвертировать Dictionary<Key, Value> в Hashset<Value>

Есть ли встроенное расширение ToHashset () LINQ для IEnumerables?

Заранее спасибо!

Ответы [ 2 ]

13 голосов
/ 05 июля 2010
var yourSet = new HashSet<TValue>(yourDictionary.Values);

Или, если хотите, вы можете использовать свой собственный простой метод расширения для обработки вывода типа.Тогда вам не нужно будет явно указывать T из HashSet<T>:

var yourSet = yourDictionary.Values.ToHashSet();

// ...

public static class EnumerableExtensions
{
    public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
    {
        return source.ToHashSet<T>(null);
    }

    public static HashSet<T> ToHashSet<T>(
        this IEnumerable<T> source, IEqualityComparer<T> comparer)
    {
        if (source == null) throw new ArgumentNullException("source");

        return new HashSet<T>(source, comparer);
    }
}
5 голосов
/ 05 июля 2010

new HashSet<Value>(YourDict.Values);

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