Vb.net 在组合框中排序日期

Vb.net 在组合框中排序日期,vb.net,combobox,Vb.net,Combobox,我有一个包含以下日期的组合框:2014年1月27日、2014年1月5日、2013年12月20日 如何根据年份和月份对它们进行排序,似乎: combobox.sorted = true 基于第一个字符的作品 如何排序以首先显示12月日期在将列表添加为数据源之前,可以使用日期列表的默认排序: Dim Dates As List(Of Date) = { Date.Parse("1/27/2014"), Date.Parse("

我有一个包含以下日期的组合框:2014年1月27日、2014年1月5日、2013年12月20日

如何根据年份和月份对它们进行排序,似乎:

combobox.sorted = true
基于第一个字符的作品


如何排序以首先显示12月日期

在将列表添加为数据源之前,可以使用日期列表的默认排序:

    Dim Dates As List(Of Date) =
        {
            Date.Parse("1/27/2014"),
            Date.Parse("1/5/2014"),
            Date.Parse("12/20/2013")
        }.ToList
    Dates.Sort()
    ComboBox1.DataSource = Dates
要按降序排序,可以在对集合排序后使用Reverse。按降序排序比遍历集合两次更合适。自定义比较将在此处起作用:

Dates.Sort(New Comparison(Of Date)(Function(x As Date, y As Date) y.CompareTo(x)))

在填充组合框之前,不能对值进行排序吗?@ric我在“创建”组合框时将它们添加到组合框中。您是否建议将它们添加到数组或列表中,然后进行排序?如果是这样,请说明如何按日期对列表进行排序?(或多或少类似于我的答案),但是,仅供参考,在考虑LINQ之前,我测试了这种方法(排序/反向),似乎没有产生好的结果。更具体地说,我用这些特定的日期进行了测试,结果不正确(至少是反向测试)。反向测试的一个方面吸引了很多人。它需要先进行适当的排序,然后才能正确地反转排序。排序使用正在排序的对象的默认比较器。只要类实现了一个比较器,它就会按照比较器的设计方式工作。也许你应该在回答中澄清这个问题。附言:我没有过多地研究这个问题;我只对字符串使用sort/reverse,所以当我看到问题时,就转到LINQ;我觉得有点奇怪但是。。。(下午我不想调查这些事情:))不太奇怪,因为Reverse不是一种排序算法,而是一种反向算法。因此,无论集合的顺序如何,反向只是将其反转。它不应用任何排序。顺便说一句,组合框项目是对象,它们只显示为字符串。这一点现在已经很清楚了,如果我转到反向MSDN文章,而不是排序文章,我会很清楚。但是,从直觉上看,它确实似乎是排序的倒数,正如你所看到的,在我的回答中;LINQ具有相同的排序/逆排序,并且两者都独立工作,正如从排序/逆排序中所预期的那样。从这个答案可以很清楚地看出,我没有太多地使用反向;但似乎是一个更明显的实现,这就是为什么我计划在其明显的配置中建议它(与Sort相同,但相反);当我的测试告诉我不是这样的时候。。。