【Unity】LINQを使ってディクショナリからデータを抽出する

スポンサーリンク
C#
スポンサーリンク

LINQを使うと、DictionaryやListからSQLのWhere句の様な感覚でデータを抽出できるので非常に便利です。
例えばゲームのミッション機能を実装する際に、未達成のミッションのみを一覧に出したい場合、余計なループやif文で抽出する必要はなく、以下のように実装できます。

    public enum MissionState
    {
        Achieved, //達成済み
        NotAchieved, //未達成
        Received //報酬受取済み
    }

    //ミッション達成状態を保存しているディクショナリの中で要素(n)の値(Value)が達成済みフラグのものを抽出
    var notAchievedMissions= achievedDailyMissionList.Where(n=>n.Value==MissionState.NotAchieved).ToDictionary(x=>x.Key,x=>x.Value);

    foreach (KeyValuePair<int, MissionState> v in notAchievedMissions)
    {
    }

抽出結果に.ToDictionary(x=>x.Key,x=>x.Value)していますが、こうする事で抽出結果をKeyValuePairではなくDictionaryにできるので、CountプロパティやContainsKey()などを使う事ができます。

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

タイトルとURLをコピーしました