سؤال

أواجه بعض الصعوبات لفرز النتائج حسب التاريخ.هل هناك أي طريقة ؟ لأن أنا أفعل هذا الآن:

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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top