He buscado esto en la red pero estoy pidiendo esto para asegurarse de que no he perdido algo. ¿Hay una función incorporada para convertir HashSets en Listas en C#? Necesito evitar la duplicidad de elementos pero necesito devolver una lista.C# Hashset conversión a listas
17
A
Respuesta
48
Así es como yo lo haría:
using System.Linq;
HashSet<int> hset = new HashSet<int>();
hset.Add(10);
List<int> hList= hset.ToList();
HashSet es, por definición, no contiene duplicados. Entonces no hay necesidad de Distinct
.
5
Existe el método de extensión Linq ToList<T>()
que hará eso (Se define en IEnumerable<T>
que se implementa por HashSet<T>
).
Sólo asegúrese de que está using System.Linq;
Como es obvio conscientes del HashSet
le asegura no hay duplicados, y esta función le permitirá regresar como un IList<T>
.
12
dos opciones 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);
Personalmente preferiría que llaman ToList
es que significa que no es necesario reformular el tipo de la lista.
Contrariamente a mis pensamientos anteriores, en ambos sentidos permiten covarianza a expresarse fácilmente en C# 4:
HashSet<Banana> bananas = new HashSet<Banana>();
List<Fruit> fruit1 = bananas.ToList<Fruit>();
List<Fruit> fruit2 = new List<Fruit>(bananas);
5
List<ListItemType> = new List<ListItemType>(hashSetCollection);
Cuestiones relacionadas
- 1. C#: los valores del diccionario para la conversión hashset
- 2. Optimizar la conversión de IEnumerable a HashSet en LINQ
- 3. Conversión de HashSet <String> a Cadena []
- 4. Conversión de registros a listas (y viceversa)
- 5. Convertir C# HashSet a F # Set
- 6. listas Conversión de tuplas a las cadenas de Python
- 7. Python: conversión de lista de listas a tuplas de tuplas
- 8. HashSet
- 9. Common Lisp: conversión entre listas y matrices
- 10. C++ conversión implícita a bool
- 11. Conversión de Matlab a C++
- 12. C# - Conversión a uint byte []
- 13. Conversión de fuente C a C++
- 14. Conversión de FORTRAN a C/C++
- 15. La conversión de Obj C a C#
- 16. C# hashset Contiene no únicos objetos
- 17. recuperar un objeto de hashset en C#
- 18. HashSet Iterando al eliminar elementos en C#
- 19. Reemplazo de HashSet en C# 2.0
- 20. Añadiendo referencia a estructuras en listas C#
- 21. conversión de XML a cadena usando C#
- 22. conversión de C# a VB Razor
- 23. Conversión de v8 :: Argumentos a C++ Tipos
- 24. conversión de VB LINQ a C#
- 25. C# cadena de conversión explícita a ENUM
- 26. Cadena de C++ a doble conversión
- 27. cadena a la conversión enum en C#
- 28. Objetivo C int La conversión a flote
- 29. C++ Protobuf a/desde la conversión JSON
- 30. Conversión de código Win16 C a Win32
En relación con esto, si tengo una lista ordenada y hago orderedList.Distinct () .ToList() podría decirme si conserva el orden en la lista ordenada? Sirve para mi propósito si se asegura de que siempre conserve la primera ocurrencia del elemento duplicado y se deshaga de la ocurrencia posterior. (Tengo la lista ordenada por relevancia ... necesito que se conserve la más relevante) – atlantis
@Ngu there no tiene sentido usar Distinct() en un HashSet, ya que de todos modos no habrá duplicados. –
Sí, el pedido se retiene. – Graviton