2013-06-11 15 views
2

對不起,如果這是重複的,但我找不到適合我的StackOverflow帖子。列表模型 - > orderbydescending System.DateTime不起作用?

我越來越miffed學習如何使用列表模型w/linq。這裏我的問題是按DateTime排序沒有效果。我正在使用.NET框架v4.5。我正在使用SQL DataReader將數據讀入列表模型,但不是寫入/發佈sql對象,而是手動指定將數據添加到手動列出模型的列表模型。

public MyInventory : IDisposable 
{ 
    public MyInventory { 
     PurchaseId = -1; 
     StockDate = null; 
    } 
    public void Dispose() { 
     //PurchaseId... 
     StockDate = null; 
    } 
    public long PurchaseId { get; set; } 
    public DateTime? StockDate { get; set; } 
} 

List<MyInventory> modelMyInventory = new List<MyInventory>(); 

modelMyInventory.Add(new MyInventory { PurchaseId = 2, StockDate = DateTime.Parse("01-02-2010") }); 
modelMyInventory.Add(new MyInventory { PurchaseId = 5, StockDate = DateTime.Parse("01-03-2011") }); 
modelMyInventory.Add(new MyInventory { PurchaseId = 7, StockDate = DateTime.Parse("01-01-2010") }); 

modelMyInventory.OrderByDescending(m => m.StockDate); 

謝謝...

+0

這是SQL或C#的問題嗎?但是,您應該使用數據庫來訂購庫存。 –

+0

我被告知這是「OrderBy」,「OrderByDescending」等對象的一個​​臨時因素。 – fletchsod

+0

我無法使用數據庫查詢,因爲它使用表連接。試圖保持簡單並保持一流(或多個表)獨立。 – fletchsod

回答

9

OrderByDescending方法不到位訂購,則需要再次重新分配:

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate); 
+0

減去'var' –

+0

@ColmPrunty:謝謝 –

+1

啊,我明白了。所以這是必須要做的。謝啦。有人發給我的例子沒有顯示出來。 (仍然需要等待幾分鐘才能點擊接受的答案)。 – fletchsod

0
modelMyInventory.OrderByDescending(m => m.StockDate); 

實際上不排序modelMyInventory對象。相反,它返回一個新的可排序的枚舉。所以,你應該寫:

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate); 
0
modelMyInventory.OrderByDescending(m => m.StockDate); 

這不重新排序modelMyInventory。此返回StockDate訂購的新枚舉。

您可以創建一個新的變量或存儲在同一變量的新名單:

var modelSorted = modelMyInventory.OrderByDescending(m => m.StockDate); 

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate).ToList();