21

どうすればHashSet<string>c#.Net 3.5でaを並べ替えることができますか?

4

3 に答える 3

30

あなたはそうしない。定義上、aHashSetはソートされません。

ソートされたハッシュセットが必要な場合は、を使用する必要がありますSortedSet。それが公開するメソッドは、本質的に、HashSetコンテンツをソートする機能を含め、によって提供されるメソッドのスーパーセットです。

于 2012-05-08T09:16:05.307 に答える
16

この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
        */

続きを読む:http://msdn.microsoft.com/en-us/library/bb534966.aspx

于 2012-05-08T09:17:31.600 に答える
15

HashSet<string>は設計によってソートされていません。アイテムを1回並べ替える場合(〜頻繁ではない)、 OrderBy LINQメソッドを使用できます(HashSet<string>はIEnumerable<string>を実装しているため):hs.OrderBy(s => s);

ソートされたハッシュセットが必要な場合は、 SortedDictionaryクラスを使用できます。TValueジェネリックパラメーターにダミー型(つまりbool)を使用するだけです。

SortedSetクラスは、.NET3.5では使用できません。

于 2012-05-08T09:39:33.847 に答える