[解決済み] C# List<> sort by x then y
2023-04-18 17:22:43
質問
類似の リスト<>アルファベット順に並べる と同様に、ある要素でソートし、次に別の要素でソートすることができます。
SELECT * from Table ORDER BY x, y
いくつかのソート関数を含むクラスがあり、1つの要素でソートすることに問題はありません。
例えば
public class MyClass {
public int x;
public int y;
}
List<MyClass> MyList;
public void SortList() {
MyList.Sort( MySortingFunction );
}
そして、リストには以下のようなものがあります。
Unsorted Sorted(x) Desired
--------- --------- ---------
ID x y ID x y ID x y
[0] 0 1 [2] 0 2 [0] 0 1
[1] 1 1 [0] 0 1 [2] 0 2
[2] 0 2 [1] 1 1 [1] 1 1
[3] 1 2 [3] 1 2 [3] 1 2
安定したソートが望ましいですが、必須ではありません。.Net 2.0用に動作するソリューションが歓迎されます。
どのように解決するのですか?
すべてのメンバーを比較する場合、安定したソートは必要ないことを覚えておいてください。 要求された2.0の解決策は、次のようになります。
public void SortList() {
MyList.Sort(delegate(MyClass a, MyClass b)
{
int xdiff = a.x.CompareTo(b.x);
if (xdiff != 0) return xdiff;
else return a.y.CompareTo(b.y);
});
}
この2.0ソリューションは、人気のある3.5のLinqソリューションよりもまだ好ましいものであることに注意してください。 もちろん、元のリスト オブジェクトに手をつけないことを希望している場合を除きます。
関連
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] 辞書をキーでソートするにはどうしたらいいですか?
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み] リスト(C#)を多くのフィールドで並べる?重複