【问题标题】:Sorting a List by the second column in VB在VB中按第二列对列表进行排序
【发布时间】:2013-01-04 22:15:51
【问题描述】:

我正在使用一个循环来构建文件名列表及其创建日期:

Dim datelist As New List(Of KeyValuePair(Of String, Date))
Dim values As New KeyValuePair(Of String, Date)(filename, initialdate)
    If Not datelist.Contains(values) Then
         datelist.Add(values)
    End If

填充列表后,我需要在执行其他一些功能之前按日期对其进行排序。 我一直在研究 orderby 或 sort 方法,但我不知道如何正确实现它们。有人可以帮帮我吗?

【问题讨论】:

  • 为什么不是Dictionary(Of String, Date)

标签: vb.net list sorting visual-studio-2012


【解决方案1】:

这会使用List.Sort 对原始列表进行排序而不创建新列表(如 Linq 方法):

datelist.Sort(Function(kv1, kv2) kv1.Value.CompareTo(kv2.Value))

【讨论】:

  • 例如(按日期排序):datelist.Sort(Function(kv1, kv2) kv1.Value.CompareTo(kv2.Value))
  • @Mellonjollie - List(Of T).Sort(Comparison(Of T)) 是 Tim 使用的 Sort 重载,如果您想了解更多信息。
【解决方案2】:
Dim sorted = (From item In datelist Order By item.Value Select item).ToList

应该做的伎俩

【讨论】:

  • @TimSchmelter:代码是正确的,我只是抓错了变量名。
【解决方案3】:

只使用一些简单的 LINQ 有什么问题?

    Dim orderedList As List(Of KeyValuePair(Of String, Date)) = datelist.OrderBy(Function(o) o.Value).ToList

【讨论】:

  • 看起来 Dan-o 可能是先到这里的。
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2012-03-08
  • 2020-09-08
相关资源
最近更新 更多