c# .net

c# - Convierta una matriz a HashSet<T> en.NET



(6)

¿Cómo convierto una matriz a un conjunto de hash?

string[] BlockedList = BlockList.Split(new char[] { '';'' }, StringSplitOptions.RemoveEmptyEntries);

Necesito convertir esta lista en un hashset .


Aquí hay un método de extensión que generará un HashSet desde cualquier IEnumerable:

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) { return new HashSet<T>(source); }

Para usarlo con su ejemplo anterior:

var hashSet = BlockedList.ToHashSet();


Comenzando con .Net Framework 4.7.1 y .Net Core 2.0 hay un método integrado ToHashSet

using System.Linq; var hashSet = BlockedList.ToHashSet();


No se especifica qué tipo es BlockedList , por lo que supongo que es algo que se deriva de IList (si se quiere decir String donde se escribió BlockList entonces sería una matriz de cadenas derivada de IList ).

HashSet tiene un constructor que toma un IEnumerable , por lo que simplemente necesita pasar la lista a este constructor, ya que IList deriva de IEnumerable .

var set = new HashSet(BlockedList);


Palabra clave perdida en el ejemplo de extensión ....

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) { return new HashSet<T>(source); }


Para ir un paso más allá, el siguiente documento de una línea demuestra cómo se puede convertir una matriz de cadenas literales a HashSet, para que NO tenga que definir una variable intermedia SomethingList .

var directions = new HashSet<string>(new [] {"east", "west", "north", "south"});


Supongo que BlockList es una cadena (de ahí la llamada a Split) que devuelve una matriz de cadenas.

Simplemente pase la matriz (que implementa IEnumerable) al constructor de HashSet :

var hashSet = new HashSet<string>(BlockedList);