列表模型 -->按降序排序 System.DateTime 不起作用

本文关键字:排序 System DateTime 不起作用 降序 模型 列表 | 更新日期: 2023-09-27 18:17:58

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

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

谢谢。。。

列表模型 -->按降序排序 System.DateTime 不起作用

OrderByDescending方法没有就地排序,则需要再次重新分配:

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

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

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

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

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

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

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