【问题标题】:Why my Linqued query is not giving me proper result?为什么我的 Linqued 查询没有给我正确的结果?
【发布时间】:2016-05-09 09:06:08
【问题描述】:

我有这个 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();

【问题讨论】:

    标签: sql-server linq linq-to-sql sql-to-linq-conversion


    【解决方案1】:

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

    在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);
    

    【讨论】:

      【解决方案2】:

      您需要先应用 '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();
      

      【讨论】:

      • 仍然没有得到:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多