Pergunta

Eu olhei isso na net, mas eu estou pedindo isso para ter certeza que eu não ter perdido alguma coisa. Existe um built-in função para converter HashSets a listas em C #? Eu preciso evitar a duplicidade de elementos, mas eu preciso para retornar uma lista.

Foi útil?

Solução

Aqui está como eu faria isso:

   using System.Linq;
   HashSet<int> hset = new HashSet<int>();
   hset.Add(10);
   List<int> hList= hset.ToList();

HashSet é, por definição, não contendo duplicatas. Portanto, não há necessidade de Distinct.

Outras dicas

Duas opções equivalentes:

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);

Pessoalmente eu prefiro chamar ToList é isso significa que você não precisa reafirmar o tipo de lista.

Ao contrário do que os meus pensamentos anteriores, em ambos os sentidos permitir covariância para ser facilmente expresso em C # 4:

    HashSet<Banana> bananas = new HashSet<Banana>();        
    List<Fruit> fruit1 = bananas.ToList<Fruit>();
    List<Fruit> fruit2 = new List<Fruit>(bananas);

Não é o Linq método de extensão ToList<T>() que vai fazer isso (Ela é definida em IEnumerable<T> que é implementado pela HashSet<T>).

Apenas certifique-se que você está using System.Linq;

Como você está obviamente consciente do HashSet vai garantir que você não têm duplicatas, e esta função permitirá que você devolvê-lo como um IList<T>.

List<ListItemType> = new List<ListItemType>(hashSetCollection);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top