目前,我整理使用LINQ to对象,然后做的结果ToList()
列表:转换LINQ排序依据,以就地列表排序
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()
(它返回一个随机int )我不知道该怎么做。
问题:我该如何编写比较函数(或者是否有更好的方法)来执行上述的LINQ查询。
请注意,多个orderby几乎总是*错误* - 不会添加'ThenBy',因此它实际上会反转排序优先顺序。它应该是一个orderby与多个表达式 – 2011-06-13 09:22:49
我知道我会得到与x,y,z秩序相反的命令。 (虽然我确实写过这个之前,我知道单顺序的语法)。这就是为什么在下面的代码中我明确了什么是主持人。谢谢你的信息。 – 2011-06-13 09:28:05