看起来是这样,但我找不到有关该主题的任何明确文档。
我要问的是这个查询的结果是否:
from x
in Db.Items
join y in Db.Sales on x.Id equals y.ItemId
group x by x.Id into g
orderby g.Count() descending
select g.First()
始终与以下查询相同:
from x
in Db.Items
join y in Db.Sales on x.Id equals y.ItemId
group x by x.Id into g
select g.First()
请注意,第二个查询让 Linq 决定组的顺序,第一个查询将其设置为已售出的数量,从最多到最少。
我的临时测试似乎表明 Linq 以这种方式自动对组进行排序,而文档似乎表明情况正好相反——项目按照它们在选择中出现的顺序返回。我想如果它以这种方式排序,添加额外的排序是没有意义的并且会浪费循环,最好不要这样做。