如何对不同时间的数组进行排序?

时间:2017-04-13 10:49:28

标签: arrays vb.net algorithm sorting

所以我有一系列不同的时隙,但是我想整理从最早的时间到最新的时间,但是,我还要删除数组中时间值为12:00 am的任何元素。

Appointment(0) = #10:45:00 AM#
Appointment(1) = #12:00:00 AM# 'My actual has up 80 elements of different timeslots but I'm using 3 elements as an example
Appointment(2) = #12:00:00 AM#

有没有人可以帮我解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用字符串数组不是一个好主意,如果你使用的只是使用 DateTime 列表和排序方法。

Dim list As List(of DateTime) = new List(of DateTime)
For Each val As String In Appointment
    list.Add(val.replace(" ",""))
Next
list.Sort(New Comparison(Of Date)(Function(x As Date, y As Date) y.CompareTo(x)))

答案 1 :(得分:0)

.Net中没有用于从数组中删除特定项目的内容,但它可以简化"简化"有点LINQ:

Dim Appointment = {#10:45#, #12AM#, #12AM#}

Appointment = (From a In Appointment Where a <> #12AM# Order By a).ToArray

Appointment = Appointment.Except({#12AM#}).ToArray
Array.Sort(Appointment)

更高效的替代方案可以是使用ListSortedSet这样的通用集合:

Dim list = New List(Of Date) From {#10:45#, #12AM#} ' or Dim list = Appointment.ToList
list.Add(#12AM#)

list.RemoveAll(Function(a) a = #12AM#)
list.Sort()