Jak można sortować HashSet<string>
w C# .Net 3.5?Sortowanie Hashset .Net 3.5
Odpowiedz
Możesz użyć metody OrderBy
, albo kompilatora danych (tj. http://msdn.microsoft.com/en-us/library/bb549422.aspx) lub używając swojego porównywalnika liniowo z niektórymi lambdami (zwykle używam predykatów dla moich porównań jak na poniższym przykładzie).
Zobacz jak na linku:
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void OrderByEx1()
{
Pet[] pets = { new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);
foreach (Pet pet in query)
{
Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
}
}
/*
This code produces the following output:
Whiskers - 1
Boots - 4
Barley - 8
*/
Więcej: http://msdn.microsoft.com/en-us/library/bb534966.aspx
To oczywiście nie sortuje samego hashset, ale zwraca posortowany widok hashset. – CodesInChaos
Tak, to prawda, wartości zawarte w HashSet nie są posortowane, ale można uzyskać do nich dostęp w posortowanym widoku (lub kopii). – ericosg
Nie. Z definicji plik HashSet
nie jest posortowany.
Jeśli chcesz posortowany zestaw haszysz, powinieneś użyć SortedSet
. Wyeksponowane metody są w zasadzie nadzbiorem tych dostarczonych przez HashSet
, w tym możliwością sortowania jego zawartości.
Należy zauważyć, że SortedSet nie będzie zawierał różnych wartości, które można uzyskać podczas używania HashSet, ale można załadować Distinct wartości podczas konstruowania go z odpowiednią metodą rozszerzenia. – ericosg
@ericosg Nie rozumiem twojego komentarza. – CodesInChaos
Miałem na myśli, jeśli potrzebujesz Wyjątkowych wartości w SortedSet, musisz wywołać .Distinct(), aby uzyskać wyraźny widok z nich. Jeśli potrzebujesz posortowanego HashSet, musisz wywołać funkcję .OrderBy(), aby uzyskać posortowany widok. – ericosg
HashSet < ciąg > nie jest posortowana według projektu. Jeśli chcesz, aby sortować elementy raz (~ nie często), a następnie można użyć OrderBy metodę LINQ (bo HashSet < ciąg implementuje IEnumerable < > ciąg >): hs.OrderBy (s => s);
Jeśli potrzebujesz posortowaną hashset następnie można użyć SortedDictionary klasę - wystarczy użyć trochę obojętne typ (tj bool) dla TValue generycznego parametru.
Klasa SortedSet nie jest dostępna w .NET 3.5.
- 1. Definiowanie: Co to jest HashSet?
- 2. XmlSerializer różni się .NET 3.5 i CF.NET 3.5
- 3. Microsoft .NET 3.5 Pełna wersja do pobrania
- 4. Kompatybilność wsteczna .NET Compact 3.5 i 2.0
- 5. .NET 3.5 Redystrybucja - 200 MB? Inne opcje?
- 6. WebApi HttpClient dla platformy .NET Framework 3.5
- 7. Czy Entity Framework 6 obsługuje .Net 3.5?
- 8. Przypisanie w drzewach wyrażeń .NET 3.5
- 9. Wymagania wstępne klienta .NET Framework 3.5 SP1
- 10. Czy NUnit działa z .NET 3.5?
- 11. Zmniejszenie aplikacji z .net 4.0 na 3.5
- 12. Czy istnieje GUID.TryParse() w .NET 3.5?
- 13. Tworzenie VSPackage kierowania .net 3.5 i 4
- 14. Awaria aplikacji po przejściu z .NET 3.5 do .NET 4.0
- 15. Jak utworzyć zestaw .NET 4.0 w projektach .NET 3.5
- 16. android SharedPreferences putStringSet sortowanie/sortowanie
- 17. Czy .NET 4 ISet <> HashSet <> zastępuje NHibernate Iesi.Collections ISet, HashSet?
- 18. Konwertuj zestaw HashSet <T> na tablicę w .NET
- 19. .NET/WinForms - Wyczyść sortowanie na DataGridView
- 20. ASP.NET 2.0 lub 3.5?
- 21. asp.net 3.5 Żądać zmiennych?
- 22. Jak sprawdzić, czy jest zainstalowany dodatek .NET 3.5 SP1?
- 23. Kierowanie zarówno na .NET 3.5, jak i na Silverlight
- 24. Czy możesz użyć biblioteki .NET 4.0 w projekcie 3.5?
- 25. Najlepszy sposób, aby określić, czy zainstalowana jest platforma .NET 3.5
- 26. Czy przenośne biblioteki klas działają z .net 3.5?
- 27. .net 3.5 SP1 Nie znaleziono Bootstrapera dla instalacji
- 28. Dokładnie jak duża jest biblioteka klasy .NET (3.5)?
- 29. Jaka jest najnowsza wersja StructureMap, która obsługuje .Net 3.5?
- 30. Wdrażanie funkcji Pub/Sub lub SignalR w .NET 3.5?
Nie możesz. 'HashSet' nie jest sortowany według definicji. Czy chcesz utworzyć posortowaną kopię, która jest tablicą? – svick
Sortować w miejscu lub posortowaną kopię? –