目前,我整理使用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