为什么我的 Linqued 查询没有给我正确的结果?

Why my Linqued query is not giving me proper result?

我有这个 sql 查询,它给了我正确的结果,即所有员工的姓名使用 order by 子句按 A 到 Z 排序

select Distinct(EmpNTLogin),Employee from Attendance 
where  CreateDate>='2016-01-01'
order by EmpNTLogin

当我在 Linq 中转换同一个查询时,我得到了正确的结果,但是 order by 子句不起作用。 这是我的 Linqued 查询

    var query = (from attendance in db.Attendances
                     orderby attendance.EmpNTLogin
                     where attendance.CreateDate.Value.Year >= 2016
                     select new { attendance.Employee, attendance.EmpNTLogin }).Distinct();

您需要先应用'where'子句,然后再应用'orderby'子句。 像这样:

var query = (from attendance in db.Attendances
                 where attendance.CreateDate.Value.Year >= 2016
                 orderby attendance.EmpNTLogin
                 select new { attendance.Employee, attendance.EmpNTLogin }).Distinct();

在 linq 查询中,distinct 在 orderby 之后应用,因此顺序被丢弃。

调用 distinct 后应用 orderby

var query = (from attendance in db.Attendances
             where attendance.CreateDate.Value.Year >= 2016
             select new
             {
                 attendance.Employee,
                 attendance.EmpNTLogin
             }).Distinct().OrderBy(att => att.EmpNTLogin);