OrderBy 在 LINQ 中没有任何效果

OrderBy not having any effect in LINQ

我有一个table里面有一组数据,如下:

请注意,以上结果是通过以下 SQL 查询收集的:

select * from Logs where RegisterationId = 16 
 and date = '2018-04-13 00:00:00.000'
order by DateTime ASC;

现在这很完美,但是当我尝试在 LINQ 中使用以下方法执行相同操作时:

var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= StartDate &&
               x.Date <= EndDate && x.isIgnore != true).OrderBy(x => x.DateTime).Distinct().ToList();

它将所有 Manual_Entry 日志一起放在列表的 bottom/at 末尾(注意下面快照中的索引 15,16 和 17),而不是 OrderBy DateTime。我需要它们按照使用 SQL 查询的方式进行排序:

.Distinct破坏秩序。切换 DistinctOrderBy 调用的位置。

正如@Ivan Stoev 已经提到的: LINQ to Entities sql 翻译器忽略 Distinct / GroupBy 之前的 OrderBy。

但如果你必须使用它,请在之前使用它 OrderBy

 var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= 
                    StartDate && x.Date <= EndDate && x.isIgnore != true).Distinct().OrderBy(x => x.DateTime).ToList();

排除 Distinct() 应该会给你合适的列表:

var logs = db.Logs.Where(x => x.RegisterationId == EnrollNumber && x.Date >= 
                   StartDate && x.Date <= EndDate && x.isIgnore != true).OrderBy(x => x.DateTime).ToList();