2012-02-19 57 views
0

我有一個ListView顯示一些圖像(使用ImageList)。到目前爲止一切正常。我可以很容易地通過屬性Text屬性來分類。但我希望能夠通過創建日期(ASC或DESC)對它們進行排序。排序ListView項目的日期

項目創建這樣的:

Item.Text = file name 
item.Tag = file path 

我想排序日期這樣的,但在排序的字典沒有成功,而且我不知道怎麼投該字典項背到列表視圖:

private void menuViewSortDate_Click(object sender, EventArgs e) 
{ 
    var files = new Dictionary<ListViewItem, DateTime>(); 

    foreach(ListViewItem item in listViewLoadedImages.Items) 
    { 
     files.Add(item, File.GetCreationTime(item.Tag.ToString())); 
    } 

    listViewLoadedImages.BeginUpdate(); 
    listViewLoadedImages.Items.Clear(); 

    // how to sort dictionary by DateTime ?? 
    // like files.Sort(bydate); 

    //How can refer to key values (listviewitems) in dictionary 
    listViewLoadedImages.Items.AddRange((ListViewItem)files.Keys); 

    listViewLoadedImages.EndUpdate(); 
} 

回答

0

由於阿夫納說,字典是不是默認排序,但是你可以使用一些LINQ做返回一個IEnumerable的:

var results = files.OrderBy(x=>x.Value); 

我也不清楚,你如何讓一個ListViewItem的唯一作爲關鍵然而,你可以嘗試並鑄造你的字典鍵

var lvItems = files.Keys.Cast<ListViewItem>(); 
1

字典經過優化,可以快速檢索,但這意味着內部訂單是未定義的,並且由內部實現指定。

如果您需要具有特定的密鑰順序,請使用SortedDictionary類,並在必要時向其傳遞IComparer以定義排序順序。