加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC – Model.OrderBy Date无效

发布时间:2020-12-16 03:35:04 所属栏目:asp.Net 来源:网络整理
导读:按日期排序结果我遇到了一些困难.有什么特别的方法吗? 因为我现在正在这样做: var db = new DB();var articles = db.Articles;var orderedArticles = articles.OrderBy(a = a.Date);return View(orderedArticles.ToList()); 其中Date是日期时间字段. 对Ord
按日期排序结果我遇到了一些困难.有什么特别的方法吗?
因为我现在正在这样做:

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的第一个顺序和后来的Date顺序:

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,这是这种情况的问题.

解决方法

这段代码看起来不错.您应该检查Date字段中的实际内容,并确保您不要在数据库级别上仅设置DateTime对象的Date,这将导致特定日期的所有DateTime对象指向00:00:00因此LINQ不会知道如何对它们进行排序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读