为什么我的 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);
我有这个 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);