在.NET中将数组转换为HashSet <T>

如何将数组转换为散列集?

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

我需要将此列表转换为hashset

你不指定BlockedList是什么types的,所以我将假设它是从IList派生的(如果你想要写BlockList那么它将是一个从IList派生的string数组)。

HashSet有一个构造函数,它接受一个IEnumerable ,所以你只需要将这个列表传递给这个构造函数,就像IList派生自IEnumerable

 var set = new HashSet(BlockedList); 

我假设BlockList是一个string(因此调用拆分)返回一个string数组。

只需将数组(实现IEnumerable)传递给HashSet的构造函数 :

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

这是一个扩展方法,它将从任何IEnumerable生成一个HashSet:

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

要用你的例子在上面:

 var hashSet = BlockedList.ToHashSet(); 

错过了关于扩展例子的新关键字….

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

更进一步,下面的一行代码演示了如何将文本string数组转换为HashSet,以便您不必定义中间variablesSomethingList

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