2013-06-11 4 views
2

Извините, если это дубликат, но я не могу найти сообщение StackOverflow, которое работает для меня.Список моделей -> orderbydescending System.DateTime не работает?

Я получаю удовольствие от изучения того, как использовать модель списка 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

Является ли это SQL или C# вопрос? Однако вы должны использовать базу данных для заказа своего инвентаря. –

+0

Мне сказали, что это линк-объект таких объектов, как «OrderBy», «OrderByDescending» и т. Д. – fletchsod

+0

Я не могу использовать запрос базы данных, так как он использует соединение таблицы. Попытка сохранить его просто и сохранить класс (или таблицы) отдельно. – fletchsod

ответ

9

OrderByDescending метод не заказ на месте, вам необходимо повторно назначить снова:

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

Минус 'var' –

+0

@ColmPrunty: Спасибо –

+1

Ahhh, я вижу. Так вот что нужно сделать для того, чтобы он работал. Спасибо чувак. Пример, который мне прислал, не показал этого. (Еще нужно подождать несколько минут, чтобы щелкнуть принятый ответ). – 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(); 
Смежные вопросы