どうすればHashSet<string>
c#.Net 3.5でaを並べ替えることができますか?
3 に答える
あなたはそうしない。定義上、aHashSet
はソートされません。
ソートされたハッシュセットが必要な場合は、を使用する必要がありますSortedSet
。それが公開するメソッドは、本質的に、HashSet
コンテンツをソートする機能を含め、によって提供されるメソッドのスーパーセットです。
このOrderBy
メソッドは、IComparer(つまり、http://msdn.microsoft.com/en-us/library/bb549422.aspx)またはいくつかのラムダとインラインで比較器を使用する(通常、以下のように比較に述語を使用します)のいずれかを使用できます。 )。
リンクごとに参照してください:
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
*/
HashSet<string>は設計によってソートされていません。アイテムを1回並べ替える場合(〜頻繁ではない)、 OrderBy LINQメソッドを使用できます(HashSet<string>はIEnumerable<string>を実装しているため):hs.OrderBy(s => s);
ソートされたハッシュセットが必要な場合は、 SortedDictionaryクラスを使用できます。TValueジェネリックパラメーターにダミー型(つまりbool)を使用するだけです。
SortedSetクラスは、.NET3.5では使用できません。