LINQ到实体的结果没有正确排序

本文关键字:排序 结果 实体 LINQ | 更新日期: 2023-09-27 18:01:22

我有一个LINQ到实体查询,应该根据升序的DateTime字段输出数据。但是,它没有按照任何特定的顺序输出数据,我不知道原因。

我已经对DB做了一个基本的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();

LINQ到实体的结果没有正确排序

.HasValue返回布尔值。如果属性不为空,则为True。这行不通。相反,尝试:

.OrderBy(r => r.DateReleased)

正如@user2864740在评论中指出的那样,要确保空值到达列表的末尾,请尝试:

.OrderBy(r => r.DateRelease ?? DateTime.Max)