ASP.NET MVC - نموذج.OrderBy تاريخ ليس له أي تأثير
-
07-07-2019 - |
سؤال
أواجه بعض الصعوبات لفرز النتائج حسب التاريخ.هل هناك أي طريقة ؟ لأن أنا أفعل هذا الآن:
var db = new DB();
var articles = db.Articles;
var orderedArticles = articles.OrderBy(a => a.Date);
return View(orderedArticles.ToList());
حيث التاريخ هو حقل التاريخ والوقت.وليس هناك أي تأثير على OrderBy(..) أو OrderByDescending(..)
حتى تمكنت من التحقق من ما يحدث.
في كل مرة إضافة مادة جديدة أنا فقط باستخدام التاريخ ليس الوقت المناسب لذلك إذا كان لدي مادتين لكل نفس اليوم على سبيل المثال:مع:
var orderedArticles = db.Articles.OrderByDescending(a => a.Date).ToList();
كنت قد
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
لذلك يمكنك أن ترى أن يتم تصفية حسب التاريخ, لكن الأمر هو عندما يكون لدي نفس التاريخ الفرز يفقد التركيز.فما فعلته هو orderBy اثنين سياقات مختلفة مثل أول order by Id وما بعدها ترتيب حسب التاريخ:
var orderedArticles = db.Articles.OrderByDescending(a => a.Id).OrderByDescending(a => a.Date).ToList();
حتى بعد هذا يجب التالية:
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
أنا حقا لا أعرف إذا كان هذا هو الطريق الصحيح للقيام بذلك لأن المشكلة الرئيسية هي أنه عند تقديم حقل التاريخ مثل 16/09/2009 فإنه يحدد الوقت إلى الساعة 00:00 و هذه هي المشكلة في هذه الحالة.
المحلول
هذا الرمز تبدو جيدة.يجب عليك التحقق ما هو حقا في حقل التاريخ و تأكد من أنك لا على سبيل المثال فقط تحديد موعد التاريخ والوقت الكائن على مستوى قاعدة البيانات ، التي من شأنها أن تؤدي في كل التاريخ والوقت الكائنات من تاريخ معين إلى نقطة إلى 00:00:00 وهكذا LINQ لا أعرف كيفية فرزها.
نصائح أخرى
أبحث عن الحل الذي قدمته (التي لمعلوماتك يجب أن يتحرك في مسألة تحرير) ، يجب تطبيق ThenBy بدلا من جديد OrderBy:
var articles = db.Articles.OrderByDescending(a => a.Date).ThenBy(a => a.Id).ToList();