prega, suggeriscono la via più breve per convertire Dictionary<Key, Value>
-Hashset<Value>
C#: valori dizionario per HashSet conversione
C'è built-in ToHashset() LINQ estensione per IEnumerables?
Grazie in anticipo!
prega, suggeriscono la via più breve per convertire Dictionary<Key, Value>
-Hashset<Value>
C#: valori dizionario per HashSet conversione
C'è built-in ToHashset() LINQ estensione per IEnumerables?
Grazie in anticipo!
var yourSet = new HashSet<TValue>(yourDictionary.Values);
O, se si preferisce, si può battere il proprio metodo semplice estensione per gestire il tipo di inferenza. Allora non sarà necessario specificare esplicitamente il T
del 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);
}
}
new HashSet<Value>(YourDict.Values);
Questa domanda e risposta non ha senso per me. Secondo MSDN, un HashSet non può contenere elementi duplicati e dovrebbe essere considerato come una raccolta del dizionario senza valori. Non ha senso prendere tutti i valori da un Dizionario e assegnarli a un HashSet. –
Sfortunatamente, un oggetto KeyCollection non è uguale a un oggetto HashSet, nonostante quanto vorrei che fosse così. – Paul
Tenendo presente che questa domanda ha 5 anni; Sono d'accordo con @ChristopherPainter. Qual e il punto? Cosa avrebbe molto più senso per quanto riguarda l'unicità (anche se non è la risposta a questa particolare domanda): 'nuovo HashSet (myDictionary.Keys)'. –
Heliac