对Hashset .Net 3.5进行排序

时间:2012-05-08 09:13:10

标签: c# .net-3.5

如何在c#.Net 3.5中对HashSet<string>进行排序?

3 个答案:

答案 0 :(得分:24)

你没有。根据定义,HashSet未排序。

如果您想要一个已排序的哈希集,那么您应该使用SortedSet。它公开的方法基本上是HashSet提供的方法的超集,包括对其内容进行排序的能力。

答案 1 :(得分:12)

你可以使用OrderBy方法,IComparer(即http://msdn.microsoft.com/en-us/library/bb549422.aspx)或使用你的比较器内联一些lambdas(我通常使用谓词进行比较,如下所示)。

按链接查看:

        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

答案 2 :(得分:9)

的HashSet&LT;串GT;没有按设计排序。如果你想对项目排序一次(〜不经常),那么你可以使用 OrderBy LINQ方法(因为HashSet&lt; string&gt;实现IEnumerable&lt; string&gt;): hs.OrderBy(s =&gt; s);

如果您需要排序的hashset ,那么您可以使用SortedDictionary类 - 只需为 TValue bool ) >通用参数。

.NET 3.5中没有SortedSet类。