列表模型 - > orderbydescending System.DateTime不起作用?

时间:2013-06-11 15:39:33

标签: c# linq model

很抱歉,如果这是重复的,但我找不到适用于我的StackOverflow帖子。

我对学习如何使用列表模型w / linq感到恼火。我的问题是按DateTime排序没有效果。我正在使用.NET framework 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);

...谢谢

3 个答案:

答案 0 :(得分:11)

OrderByDescending方法没有按顺序排列,您需要重新分配:

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

答案 1 :(得分:0)

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

实际上并没有对modelMyInventory对象进行排序。相反,它返回一个已排序的新枚举。所以你应该写:

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

答案 2 :(得分:0)

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

这不会重新排序 modelMyInventory。此返回StockDate排序的新枚举。

您可以创建新变量或将新列表存储在同一变量中:

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

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