2014-10-02 40 views
0

我正在寫C#排序列表框與多個字段按日期

我有兩個列表框。

列表框1被填充,我沒有問題。

然後,我有一個foreach循環遍歷列表框1中的每個項目,並基於linq查詢填充列表框2。

    foreach (var item in listBox2.Items) 
        { 

         var date = 
          (from z in task.tblContractProcessRequests 
          where z.RequestID == Int32.Parse(item.ToString()) && z.RequestTypeID == 1 
          select z).Single(); 

         listBox3.Items.Add(date.RequestID + " - " + date.RequestTime); 

        } 

所以現在我的列表框2看起來是這樣的

12345 - 01/12/2010 
65432 - 03/12/2009 
92354 - 12/31/2013 

我怎麼會那麼解決這第二個列表框中海灣日期下降到這個樣子?

92354 - 12/31/2013 
12345 - 01/12/2010 
65432 - 03/12/2009 
+0

您可以在日期存儲在一個排序的字典,然後檢索值使用keyvaluepair保存,並把它們添加到列表框中 – deathismyfriend 2014-10-02 20:36:20

回答

1

首先獲得日期的順序列表,然後填充listBox3:

var dates = listBox2.Items.Cast<object>().Select(item => 
    (from z in task.tblContractProcessRequests 
     where z.RequestID == Int32.Parse(item.ToString()) && z.RequestTypeID == 1 
     select z).Single()).OrderByDescending(d => d.RequestTime); 


foreach (var date in dates) 
{ 
    listBox3.Items.Add(date.RequestID + " - " + date.RequestTime); 
} 
+0

System.Windows.Forms.ListBox.ObjectCollection不包含select的定義,就是這個錯誤。 – Zingo 2014-10-02 20:47:20

+0

添加:使用System.Linq – 2014-10-02 20:51:17

+0

我已經有那裏的參考 – Zingo 2014-10-02 20:55:14