下面的linq查询未返回按sequence字段降序排序的结果。取而代之的是返回结果,而不考虑orderby:
var qr = from l in reports.layouts
where l.job == jobNumber
orderby l.sequence descending
group l by l.filename;但是,下面的代码能够返回按filename字段分组并按sequence字段降序排列的结果:
var qr = reports.layouts
.Where(l => l.job == jobNumber)
.OrderBy(l => l.filename)
.GroupBy(l => l.filename, (l, c) => c.OrderByDescending(x => x.sequence));关于应该如何编写第一个查询以按所需的降序返回结果,有人能提供一些见解吗?
发布于 2011-11-18 00:49:56
分组会破坏顺序。您的两个查询不相同。
第一个翻译成更像这样:
var qr = reports.layouts
.Where(l => l.job == jobNumber)
.OrderByDescending(l => l.sequence)
.GroupBy(l => l.filename);由于GroupBy发生在排序之后,因此它有效地破坏了排序。
就我个人而言,在这种情况下,我发现您使用的方法链语法在意图方面比等效的查询语法更清晰。
发布于 2011-11-18 00:49:19
var qr =
from l in reports.layouts
where l.job == jobNumber
group l by l.filename into g
orderby g.Key descending
select
from x in g
orderby x.sequence descending
select x;https://stackoverflow.com/questions/8170881
复制相似问题