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()などを使う事ができます。
コメント