我正在使用EntityFramework 6.1.3和SQL Server在一个C#项目中。
我有两个查询,它们基本上应该做相同的事情。
1.
2.
然而,第一个查询的结果与我去掉order by时的结果相同。第二个查询按预期工作。
当我通过Linqpad查看生成的SQL时,第一个查询中没有order by子句。
我的问题是,为什么第一个查询不像第二个查询那样工作? 我一直以为...
这段文字的意思是:在这里已经有答案了:.Where(<condition>).FirstOrDefault() vs .FirstOrDefault(<condition>)。
编辑:我尝试了一下,发现这两个查询产生相同的SQL输出。
尽管它看起来像个虫子,但我仍然不完全相信。
1.
Exams.GroupBy(x=>x.SubjectID).Select(x => x.OrderBy(y => y.Level.NumericValue).FirstOrDefault(y => y.Date.Value > DateTime.Today))
2.
Exams.GroupBy(x=>x.SubjectID).Select(x => x.Where(y => y.Date.Value > DateTime.Today).OrderBy(y => y.Level.NumericValue).FirstOrDefault())
然而,第一个查询的结果与我去掉order by时的结果相同。第二个查询按预期工作。
当我通过Linqpad查看生成的SQL时,第一个查询中没有order by子句。
我的问题是,为什么第一个查询不像第二个查询那样工作? 我一直以为...
.Where(<condition>).FirstOrDefault() == .FirstOrDefault(<condition>)
这段文字的意思是:在这里已经有答案了:.Where(<condition>).FirstOrDefault() vs .FirstOrDefault(<condition>)。
编辑:我尝试了一下,发现这两个查询产生相同的SQL输出。
Exams.GroupBy(x => x.SubjectID).Select(x => x.FirstOrDefault(y => y.Date.Value > DateTime.Today))
Exams.GroupBy(x => x.SubjectID).Select(x => x.OrderBy(y => y.Level.NumericValue).FirstOrDefault(y => y.Date.Value > DateTime.Today))
尽管它看起来像个虫子,但我仍然不完全相信。