3

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

我对学习如何使用带有 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);

谢谢...

4

3 回答 3

14

OrderByDescending方法没有排序到位,需要重新重新赋值:

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate);
于 2013-06-11T15:41:40.770 回答
0
modelMyInventory.OrderByDescending(m => m.StockDate);

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

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate);
于 2013-06-11T15:41:56.063 回答
0
modelMyInventory.OrderByDescending(m => m.StockDate);

这不会重新排序 modelMyInventory。这将返回一个由 排序的新枚举StockDate

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

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

或者

modelMyInventory = modelMyInventory.OrderByDescending(m => m.StockDate).ToList();
于 2013-06-11T15:42:16.813 回答