Hash Tablolarını Sıralama
Diyelim ki şöyle basit bir karma tablonuz var:
$hash = @{
Name="Jeff"
Size = 123
Color = "Green"
Computer = "Yoga2Pro"
}Ve şu şekilde görüntülenir:
PS C:\scripts> $hash
Name Value
---- -----
Color Green
Name Jeff
Computer Yoga2Pro
Size 123Anahtarları sıralamak için her karma tablo nesnesinin parçası olan GetEnumerator() yöntemini kullanabilirsiniz. Bu yöntem, karma tablosundaki her öğe için System.Collections.DictionaryEntry nesnesi oluşturur.
PS C:\scripts> $hash.GetEnumerator() | get-member
TypeName: System.Collections.DictionaryEntry
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = Key
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Key Property System.Object Key {get;set;}
Value Property System.Object Value {get;set;}Bu, herhangi bir özelliğe göre sıralama yapabileceğiniz anlamına gelir.
PS C:\scripts> $hash.GetEnumerator() | sort key
Name Value
---- -----
Color Green
Computer Yoga2Pro
Name Jeff
Size 123
PS C:\scripts> $hash.GetEnumerator() | sort value
Name Value
---- -----
Size 123
Color Green
Name Jeff
Computer Yoga2Pro
Bu arada, PowerShell 3.0'dan itibaren karma tablosunu "sıralı" olarak tanımlayarak "önceden sıralayabilirsiniz".
$hash = [ordered]@{
Name="Jeff"
Computer = "Yoga2Pro"
Color = "Green"
Size = 123
}Artık karma tablosu her zaman girişleri tanımladığınız sıraya göre sıralanacaktır.
PS C:\scripts> $hash
Name Value
---- -----
Name Jeff
Computer Yoga2Pro
Color Green
Size 123Yine de sıralamak istiyorsanız yine de yapabilirsiniz.
PS C:\scripts> $hash.GetEnumerator() | sort name -Descending
Name Value
---- -----
Size 123
Name Jeff
Computer Yoga2Pro
Color GreenHarika bir hafta geçirmenizi dilerim, umarım her şey yoluna girer.
