我在按日期对结果进行排序时遇到一些困难。有什么特别的方法吗? 因为我现在正在这样做:
var db = new DB();
var articles = db.Articles;
var orderedArticles = articles.OrderBy(a => a.Date);
return View(orderedArticles.ToList());
其中 Date 是日期时间字段。 对于 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 两个不同的上下文,例如第一个按 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,这是一个问题这种情况。
最佳答案
查看您提供的答案(仅供引用,应将其作为编辑移至问题中),您应该应用 ThenBy,而不是新的 OrderBy:
var articles = db.Articles.OrderByDescending(a => a.Date).ThenBy(a => a.Id).ToList();
关于asp.net-mvc - ASP.NET MVC - Model.OrderBy Date 没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433088/