J'ai regardé ça sur le net mais je demande ceci pour m'assurer que je n'ai pas raté quelque chose. Existe-t-il une fonction intégrée pour convertir les HashSets en listes en C #? Je dois éviter la duplicité des éléments mais je dois retourner une liste.
Voici comment je le ferais:
using System.Linq;
HashSet<int> hset = new HashSet<int>();
hset.Add(10);
List<int> hList= hset.ToList();
HashSet ne contient par définition aucun doublon. Il n'y a donc pas besoin de Distinct
.
Deux options équivalentes:
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);
Personnellement, je préfère appeler ToList
, cela signifie que vous n'avez pas besoin de reformuler le type de la liste.
Contrairement à mes pensées précédentes, les deux façons permettent d'exprimer facilement la covariance en C # 4:
HashSet<Banana> bananas = new HashSet<Banana>();
List<Fruit> fruit1 = bananas.ToList<Fruit>();
List<Fruit> fruit2 = new List<Fruit>(bananas);
Il y a la méthode d'extension Linq ToList<T>()
qui fera cela (elle est définie sur IEnumerable<T>
qui est implémenté par HashSet<T>
).
Assurez-vous simplement que vous êtes using System.Linq;
Comme vous le savez évidemment, le HashSet
vous assurera de ne pas avoir de doublons, et cette fonction vous permettra de le renvoyer en tant que IList<T>
.
List<ListItemType> = new List<ListItemType>(hashSetCollection);