Sprawdziłem to w sieci, ale proszę o to, aby upewnić się, że nie przegapiłem czegoś. Czy istnieje wbudowana funkcja do konwersji HashSets do list w C#? Muszę unikać obłudy elementów, ale muszę zwrócić listę.C# Hashset konwersja na listy
17
A
Odpowiedz
48
Oto jak zrobiłbym to:
using System.Linq;
HashSet<int> hset = new HashSet<int>();
hset.Add(10);
List<int> hList= hset.ToList();
HashSet jest, z definicji, nie zawierające duplikaty. Więc nie ma potrzeby, aby Distinct
.
5
Istnieje metoda rozszerzenia Linq ToList<T>()
, która to zrobi (jest zdefiniowana na IEnumerable<T>
, która jest implementowana przez HashSet<T>
).
Wystarczy upewnić się, jesteś using System.Linq;
Jak są oczywiście świadomi HashSet
zapewni nie masz duplikatów, a funkcja ta pozwoli Ci powrócić go jako IList<T>
.
12
Dwa równorzędne opcje:
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);
Osobiście wolałbym zawijające ToList
to oznacza to, że nie trzeba przekształcać typ listy.
przeciwieństwie do moich poprzednich myśli, oba sposoby pozwalają kowariancji być łatwo wyrażona w 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);
Powiązane problemy
- 1. Konwersja listy System.Array na listę
- 2. Konwersja słownika do kolekcji listy w C#
- 3. Java HashSet equiv in C++
- 4. C# Hashset Zawiera nieunikalne Przedmioty
- 5. Konwersja źródła C na C++
- 6. Korzyści z konwertowania listy <String> na HashSet <String> Java
- 7. Konwersja Enum do listy
- 8. Konwersja rekordów na listy (i powrót)
- 9. Pobierz losowy element z C# HashSet szybko
- 10. Konwersja listy do dict Pythona
- 11. Konwersja dataFrame do listy
- 12. Konwersja CFStringRef na ciąg C?
- 13. C# - Konwersja uint na bajt []
- 14. C# cała zawartość HashSet <string>
- 15. HashSet umożliwia zdublowane wstawianie elementów - C#
- 16. Konwersja IPv6 na IPv4 w C#
- 17. pobrać obiekt z HashSet w C#
- 18. C# - definiowanie hashset z niestandardowym kluczem
- 19. Konwersja listy wyjściowej konsoli do rzeczywistej listy R
- 20. Czy istnieje odpowiednik AddRange dla HashSet w C#
- 21. Konwersja listy krotkowej i rekurencyjnej
- 22. Konwersja listy Scala do listy o innym typie
- 23. Konwersja XML do rodzajowego listy
- 24. Konwersja Python słownik do listy
- 25. Sortowanie Hashset .Net 3.5
- 26. usuwanie odwołań zerowych z HashSet
- 27. Konwersja wartości słownika na tablicę
- 28. Konwersja BMP na PCX C# Compact Framework
- 29. Konwersja base64 na obraz w C#
- 30. C++ Konwersja na podwójną konwersję tracąc precyzję?
Wiąże się z tym, jeśli mam uporządkowaną listę i zrobić orderedList.Distinct () .ToList() czy możesz mi powiedzieć, czy zachowuje kolejność w liście uporządkowanej? Służy temu celowi, jeśli gwarantuje, że zawsze zachowuje pierwsze wystąpienie duplikatu i pozbywa się późniejszego wystąpienia (mam listę uporządkowaną według trafności ... potrzebuję zachować bardziej odpowiednią) – atlantis
@Ngu tam nie ma sensu używać Distinct() na HashSet, ponieważ i tak nie będzie duplikatów. –
Tak, zamówienie zostało zachowane. – Graviton