2013-01-04 74 views
2

排序列表我使用一个循环,建立文件名和它们的创建日期的列表:填充列表第二列在VB

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或排序方法,但我无法弄清楚如何正确实现它们。有人能帮我一把吗?

+0

为什么不是'Dictionary(Of String,Date)'? – SWeko

回答

5

这个排序原始列表,而无需创建一个新的列表(如LINQ的方法):

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

例如(按日期排序):'datelist.Sort(函数(kv1,kv2)kv1.Value.CompareTo(kv2.Value))' –

+0

@TimSchmelter - 是的...忘了'KeyValuePair'是一个结构,而不是一个类... – prprcupofcoffee

+0

谢谢蒂姆,那种代码的工作很好。 – Mellonjollie

2
Dim sorted = (From item In datelist Order By item.Value Select item).ToList 

应该做使用List.Sort的伎俩

+0

@TimSchmelter:代码是正确的,我只是抓错了变量名。 –

1

出了什么问题只是用一些简单的LINQ?

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

看起来像Dan-o可能先来到这里。 – Steve