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

Posted

技术标签:

【中文标题】为啥我的 Linqued 查询没有给我正确的结果?【英文标题】: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();

【问题讨论】:

【参考方案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();

【讨论】:

仍然没有得到:(

以上是关于为啥我的 Linqued 查询没有给我正确的结果?的主要内容,如果未能解决你的问题,请参考以下文章

为啥对 List<T> 的迭代没有从 SQL 视图中给我正确的值? [复制]

核心数据 - 为啥我的 NSPredicate 没有产生正确的 SQL 查询?

SQL Server表名为啥要加方括号?

面试说两天给结果给我,那都没有机会为啥不说今天给结果给我?

为啥我的查询没有返回任何结果?

为啥 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?