インプレースリストにLINQのORDERBYを変換し、私はその後、結果に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()
メソッドを使用して推測します。しかし、もし私がただ1つのことで注文していたのであれば、私はPossibleMoveLocationOrdering
(int
を返します)、IsSameType(PML) ? (_Owner[PML] as TileFlowing).UnitsWithin : 0
、、次にRandomiser.Next()
(これはランダムint )私はこれを行う方法を知らない。
質問:上記のLINQクエリの暗黙的な並べ替えを行うには、どのように比較関数を書くか(より良い方法がありますか)。最も一般的
複数のorderbyはほとんど常に*間違っています - それは 'ThenBy'を追加しないので、実際にソートの優先順位を逆転します。それは複数の式を持つ単一のorderbyでなければなりません –
私はorderby x、y、zの反対を注文することを理解します。 (私は単一のorderby構文について知る前にこれを書いていましたが)。だからこそ、コードの下のテキストでは、何が起こっているのかを明確にしています。しかし、情報をありがとう。 –