我有一个包含一组数据的表,如下所示:
请注意,上述结果由以下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
日志放在列表底部/末尾(请注意下面快照中的索引15,16和17),而不是OrderBy
{{ 1}}。我需要它们使用SQL查询完全按照它的方式排序:
答案 0 :(得分:2)
正如@Ivan Stoev已经提到的: LINQ to Entities sql translator忽略了 OrderBy之前的Distinct / GroupBy。
但如果你必须使用它,请在之前使用 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();
答案 1 :(得分:1)
.Distinct
销毁订单。切换Distinct
和OrderBy
来电的位置。