私はこれをネットで調べましたが、何かを見逃していないことを確認するためにこれを求めています。 C#でHashSetをリストに変換する組み込み関数はありますか?要素の重複を避ける必要がありますが、リストを返す必要があります。
ここに私がそれをする方法があります:
using System.Linq;
HashSet<int> hset = new HashSet<int>();
hset.Add(10);
List<int> hList= hset.ToList();
HashSetは、定義上、重複を含みません。したがって、Distinct
は必要ありません。
2つの同等のオプション:
HashSet<string> stringSet = new HashSet<string> { "a", "b", "c" };
// LINQ's ToList extension method
List<string> stringList1 = stringSet.ToList();
// Or just a constructor
List<string> stringList2 = new List<string>(stringSet);
個人的には、ToList
を呼び出すことをお勧めします。これは、リストのタイプを再指定する必要がないことを意味します。
以前の考えとは逆に、どちらの方法でもC#4で共分散を簡単に表現できます。
HashSet<Banana> bananas = new HashSet<Banana>();
List<Fruit> fruit1 = bananas.ToList<Fruit>();
List<Fruit> fruit2 = new List<Fruit>(bananas);
それを行うLinq拡張メソッドToList<T>()
があります(これはIEnumerable<T>
によって実装されるHashSet<T>
で定義されています)。
あなたがusing System.Linq;
であることを確認してください
あなたが明らかに知っているように、HashSet
は重複がないことを保証し、この関数はそれをIList<T>
として返すことができます。
List<ListItemType> = new List<ListItemType>(hashSetCollection);