下面的linq查询不会返回序列字段按降序排序的结果。而是返回结果而不考虑orderby:
var qr = from l in reports.layouts
where l.job == jobNumber
orderby l.sequence descending
group l by l.filename;
但是,下面的代码能够返回按文件名字段分组的结果,并按顺序字段排序降序:
var qr = reports.layouts
.Where(l => l.job == jobNumber)
.OrderBy(l => l.filename)
.GroupBy(l => l.filename, (l, c) => c.OrderByDescending(x => x.sequence));
任何人都可以提供有关如何编写第一个查询以按所需降序返回结果的任何见解吗?
答案 0 :(得分:1)
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;
答案 1 :(得分:1)
分组会破坏订单。你的两个问题不一样。
第一个翻译成更像:
var qr = reports.layouts
.Where(l => l.job == jobNumber)
.OrderByDescending(l => l.sequence)
.GroupBy(l => l.filename);
由于GroupBy在订购之后发生,它有效地破坏了订购。
就个人而言,这是一个案例,我发现你在意图方面使用的方法链语法比等效的查询语法更清晰。