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

Sql server 为什么我的Linqued查询没有给出正确的结果?,sql-server,linq,linq-to-sql,sql-to-linq-conversion,Sql Server,Linq,Linq To Sql,Sql To Linq Conversion,我有一个sql查询,它给出了正确的结果,即所有员工的姓名都使用ORDERBY子句按A到Z排序 select Distinct(EmpNTLogin),Employee from Attendance where CreateDate>='2016-01-01' order by EmpNTLogin 当我在Linq中转换相同的查询时,我得到了正确的结果,但ORDERBY子句不起作用。 这是我的疑问 var query = (from attendance in db.Atte

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

select Distinct(EmpNTLogin),Employee from Attendance 
where  CreateDate>='2016-01-01'
order by EmpNTLogin
当我在Linq中转换相同的查询时,我得到了正确的结果,但ORDERBY子句不起作用。 这是我的疑问

    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
之后,因此该顺序被丢弃

将调用后的orderby应用于distinct

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

仍然没有得到:(