对哈希集 .Net 3.5 进行排序

本文关键字:排序 哈希集 Net | 更新日期: 2023-09-27 18:33:25

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

对哈希集 .Net 3.5 进行排序

你没有。根据定义,不对HashSet进行排序。

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

您可以使用

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

请参阅每个链接:

        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

HashSet 不是按设计排序的。如果要对项目进行一次排序(~不经常),则可以使用 OrderBy LINQ 方法(因为 HashSet 实现了 IEnumerable):hs。OrderBy(s => s);

如果你需要排序的hashset,那么你可以使用SortedDictionary类 - 只需使用一些虚拟类型(即bool)作为TValue通用参数。

类在 .NET 3.5 中不可用。