Mam pewne problemy z sortowaniem wyników według dat. Czy istnieje specjalna metoda? Ponieważ robię to teraz:ASP.NET MVC - Model.OrderBy Data nie ma wpływu
var db = new DB();
var articles = db.Articles;
var orderedArticles = articles.OrderBy(a => a.Date);
return View(orderedArticles.ToList());
Jeżeli data jest polem datetime. I nie ma żadnego wpływu na OrderBy (..) lub OrderByDescending (..)
Więc udało mi się sprawdzić, co się dzieje.
Everytime I dodać nowy artykuł Ja tylko na podstawie daty nie raz tak jeśli mam dwa artykuły zarówno w tym samym dniu na przykład: z:
var orderedArticles = db.Articles.OrderByDescending(a => a.Date).ToList();
musiałbym
Id Title Date
10 First Added Article 16/09/2009 00:00
11 Second Added Article 16/09/2009 00:00
15 Old Article Added Later 15/09/2009 00:00
Widać więc, że filtruje się według daty, ale chodzi o to, że mam tę samą datę, w której sortowanie traci ostrość. Więc co zrobiłem znaczy orderby dwa różne konteksty, jak pierwszego zamówienia przez ID i późniejszej kolejności wg daty:
var orderedArticles = db.Articles.OrderByDescending(a => a.Id).OrderByDescending(a => a.Date).ToList();
Więc po tym mam następujące:
Id Title Date
11 Second Added Article 16/09/2009 00:00
10 First Added Article 16/09/2009 00:00
15 Old Article Added Later 15/09/2009 00:00
ja naprawdę nie wiem jeśli jest to właściwy sposób, ponieważ głównym problemem jest to, że po przesłaniu pola daty, jak 16/09/2009, ustawia czas na 00:00 i jest to problem w tej sytuacji.
Niestety - nie miałem problemy z sortowaniem dat, zakładając, że Data to pole datetime. Może mógłbyś bardziej szczegółowo określić typ/wersję bazy danych? –
spróbuj przenieść OrderBy. Do: return View (articles.ToList(). OrderBy (a => a.Date)); To co robisz wygląda dobrze, ale to zabierze bazę danych z równania i po prostu użyje Linq do sortowania obiektów. Jeśli to działa, sortowanie nie ma miejsca w zapytaniu linq. – anonymous