我有一个LINQ to Entities查询,它应该按照升序顺序输出基于DateTime
字段的数据。但是,它没有以任何特定的顺序输出数据,我无法弄清楚原因。
我已经为数据库完成了一个基本的SELECT
语句,并以正确的顺序返回数据。似乎只是忽略了LINQ查询的OrderBy
命令。如何查看生成的SQL?
我已经尝试过LINQPad但是它仍然会给出一个关于上下文没有更新的BS错误,即使UPDATE-DATABASE
命令没有挂起的更改或者如果我看不到生成什么是调试的最佳方法此?
db.Releases
.Where(r => r.SectionID == model.ID)
.Include("Platform")
.Include("Region")
.Include("Publisher")
.OrderBy(r => r.DateReleased.HasValue)
.Select(r => new ReleaseInfoVM()
{
ReleaseName = r.Name,
Platform = r.Platform.Name,
Publisher =r.Publisher.Name,
Region = r.Region.Name,
ISBN = r.ISBN,
DateReleased = r.DateReleased,
EstimatedReleaseDate = r.EstimatedReleaseDate
}).ToList();
答案 0 :(得分:3)
.HasValue
返回一个布尔值。如果属性不为null,则为True。那不会奏效。相反,尝试:
.OrderBy(r => r.DateReleased)
正如@ user2864740在评论中指出的那样,为了确保空值到列表的末尾,请尝试:
.OrderBy(r => r.DateRelease ?? DateTime.Max)