【ハルシオンブログ】Listでのソートの仕方。(あ、以前同じような内容かいたかも
こんにちは!坂内っす。
夏真っ盛りですね!
30度超えが続いてまいりました!熱中症などにお気を付けください!
C#でのListソートのお話。
一度同じような内容の記事かきましたね。
まぁもう一度ってことで・・・・
[Blog20210719.cs]

こんな感じでまだソートしてないのでそのままの順で表示されます。
では、GameTypeでソートをしてみます。
List.Sort((a, b) => b.gameType - a.gameType)
でソートができます。
これの結果はこれ。

ゲーム種でソートができました。
Actionが最後にきましたね。
ソートの引数を変えてやれば、逆順になります。
List.Sort((a, b) => a.gameType - b.gameType);
こうすれば、Actionが先にきますね。
名前でソートする場合はこんな感じ。
stringには-(マイナス)が使えないため、CompareToを使います。

ちゃんと名前でソートできましたね。
こんな感じでListのソートができます。
ってことで、今日はここまで!あでゅ~ノシ
夏真っ盛りですね!
30度超えが続いてまいりました!熱中症などにお気を付けください!
C#でのListソートのお話。
一度同じような内容の記事かきましたね。
まぁもう一度ってことで・・・・
[Blog20210719.cs]
using System;
using System.Collections.Generic;
using UnityEngine;
public class Blog20210719 : MonoBehaviour
{
public enum GameType {
Action,
Puzzle,
Rpg,
Sports,
Etc,
}
public class Famicon {
public int no;
public string gameName;
public DateTime releaseDate;
public GameType gameType;
public Famicon(int no, string name, DateTime date, GameType type) {
this.no = no;
gameName = name;
releaseDate = date;
gameType = type;
}
public Famicon() { }
}
List cassettes = new List();
private void Start() {
SetGame();
ViewList("そのまま", cassettes);
// ソート
}
void ViewList(string viewStr, List list) {
foreach (Famicon fami in list) {
Debug.Log(fami.no + " 「" + fami.gameName + "」 発売日 : " + fami.releaseDate.ToLongDateString() + " ゲーム種 : " + fami.gameType);
}
}
void SetGame() {
Famicon game = new Famicon();
game = new Famicon(0, "マリオブラザーズ", DateTime.Parse("1983/9/9"), GameType.Action);
cassettes.Add(game);
game = new Famicon(1, "テニス", DateTime.Parse("1984/1/14"), GameType.Sports);
cassettes.Add(game);
game = new Famicon(2, "ゴルフ", DateTime.Parse("1984/5/1"), GameType.Sports);
cassettes.Add(game);
game = new Famicon(3, "アイスクライマー", DateTime.Parse("1985/1/30"), GameType.Action);
cassettes.Add(game);
game = new Famicon(4, "ファイナルファンタジー", DateTime.Parse("1987/12/18"), GameType.Rpg);
cassettes.Add(game);
game = new Famicon(5, "コナミワイワイワールド", DateTime.Parse("1988/1/14"), GameType.Action);
cassettes.Add(game);
game = new Famicon(6, "ぎゅわんぶらあ自己中心派", DateTime.Parse("1987/11/11"), GameType.Etc);
cassettes.Add(game);
}
}

こんな感じでまだソートしてないのでそのままの順で表示されます。
では、GameTypeでソートをしてみます。
private void Start() {
SetGame();
ViewList("そのまま", cassettes);
// ゲーム種でソート
cassettes.Sort((a, b) => b.gameType - a.gameType);
ViewList("ゲーム種でソート", cassettes);
}
List.Sort((a, b) => b.gameType - a.gameType)
でソートができます。
これの結果はこれ。

ゲーム種でソートができました。
Actionが最後にきましたね。
ソートの引数を変えてやれば、逆順になります。
List.Sort((a, b) => a.gameType - b.gameType);
こうすれば、Actionが先にきますね。
名前でソートする場合はこんな感じ。
private void Start() {
SetGame();
ViewList("そのまま", cassettes);
// ゲーム種でソート
cassettes.Sort((a, b) => b.gameType - a.gameType);
ViewList("ゲーム種でソート", cassettes);
cassettes.Sort((a, b) => a.gameName.CompareTo(b.gameName));
ViewList("名前でソート", cassettes);
}
stringには-(マイナス)が使えないため、CompareToを使います。

ちゃんと名前でソートできましたね。
こんな感じでListのソートができます。
ってことで、今日はここまで!あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Enumからランダムで1つを選択する方法。 | 【ハルシオンブログ】複数行の文字列で行の先頭が改行の場合だけ消したかった »
コメント
| h o m e |