很抱歉,如果这是重复的,但我找不到适用于我的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);
...谢谢
答案 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();