【发布时间】:2026-01-03 20:50:01
【问题描述】:
目前,我正在使用 LINQ to 对象对列表进行排序,然后对结果执行ToList():
var SortedPossibleMoveLocations = (from PML in PossibleMoveLocations
orderby Randomiser.Next()
orderby IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0
orderby PossibleMoveLocationOrdering(PML)
select PML).ToList();
我想将其转换为就地排序,我想使用List<T>.Sort() 方法。但是,如果我只按一件事订购,我会知道该怎么做,因为我按PossibleMoveLocationOrdering(返回int)订购,然后按IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0订购,其计算结果为int,然后Randomiser.Next()(返回一个随机整数)我不知道该怎么做。
问题:我如何编写比较函数(或者有没有更好的方法)来对上面的 LINQ 查询进行即时排序。
【问题讨论】:
-
请注意,多个 orderby 几乎总是错误 - 它不会添加
ThenBy,因此它实际上会反转排序优先级。它应该是具有多个表达式的单个 orderby -
我知道我会得到 orderby x, y, z 的相反顺序。 (虽然我在了解单一 orderby 语法之前就写了这个)。这就是为什么在代码下方的文本中,我阐明了主导的内容。不过感谢您提供的信息。