座標をコンソールに出力する前に配列をソートしようとしています。私は船の配列をY座標に基づいて解決しようとしました。私は順番にそれらを印刷することができるようにそれを並べ替える必要があります。私はArray.Sort(myArray)を試してみました - 失敗、私はリストや辞書に変換しようとしましたが、それが最善の方法であるかどうかはわかりません。助言がありますか?配列のソートC#
Need to resort the Ships array
座標をコンソールに出力する前に配列をソートしようとしています。私は船の配列をY座標に基づいて解決しようとしました。私は順番にそれらを印刷することができるようにそれを並べ替える必要があります。私はArray.Sort(myArray)を試してみました - 失敗、私はリストや辞書に変換しようとしましたが、それが最善の方法であるかどうかはわかりません。助言がありますか?配列のソートC#
Need to resort the Ships array
のArray.sort(myarrayのは)あなたが期待する何をするためには、MyArrayというの要素は、(イム船を想定する予定)に匹敵する必要があります。つまり、それらの比較方法(おそらくY座標)を指定する必要があります。
このアプローチは、shipクラスにIComparableインターフェイスを実装させるか、またはa different sort methodを使用して、使用するコンペータを個別に定義することです。
あなたの質問には何も出ていないので、私は例コードを与えることはできません。
LINQ OrderBy()メソッドを使用します。あなたが最後BoardPositionのY座標でソートしたいと仮定すると、Y座標が(例えばint
です)IComparable
を実装します。
using System.Linq;
Ship[] ships;
Ship[] sorted = ships.OrderBy(s => s.BoardPositions.Last().YCoordinate).ToArray();
編集上記のコードは、Ship[] ships
内のすべての船舶のためのことを前提としてでは少なくとも1つのエントリBoardPositions
が存在します。 BoardPositions
が空の場合は、LastOrDefault()
とnull条件付き演算子?.
を使用します。
Ship[] sorted = ships
.OrderBy(ship => ship.BoardPositions.Any())
.ThenBy(ship => ship.BoardPositions.LastOrDefault()?.YCoordinate)
.ToArray();
「Array.Sort(myArray)」が正確に何を意味するのですか?エラーメッセージはありますか?実際の結果は期待された結果と異なっていますか?もしそうなら、どうですか?例を挙げてください。いくつかの実際のコードを記述することをお勧めします。 – Codor
配列の次元数はいくつですか?ここを参照してください。 https://msdn.microsoft.com/en-us/library/system.array.sort(v=vs.110).aspx –
_ "Array.Sort(myArray)を試しました - 失敗しました" _質問として失敗します。常に完全なエラーの詳細、予想される結果、実際の結果などを含めてください。 –