Два эквивалентных варианта:
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);