List
paizaなどで問題を解く際、Listの操作をするシチュエーションは多々ある。ラムダ式を使うことでListの操作を簡潔にかけるので、ここでまとめておく。
なおこれから書くメソッドは、以下のList
var list = new List<string> { "Tokyo", "New Delhi", "Bangkok", "london", "Paris", "Berlin", "Canberra", "Hong Kong", };
Existsメソッド
引数で指定した条件に一致する要素が存在するかどうかをtrue / falseで返す。
var exists = list.Exists(s => s[0] == 'A'); // 再祚の文字列がA Console.WriteLine(exists); // falseと出力される
Findメソッド
引数で指定した条件と一致する要素を検索し、最初に見つかった要素を返す。
var name = list.Find(s => s.Length == 6); // 文字列が6の要素 Console.WriteLine(name); // londonが出力される
FindIndexメソッド
条件と一致するインデックスを返す。
int index = list.FindIndex(s => s == "Berlin"); // 要素の文字列がBerlin Console.WriteLine(index); // 5が出力される
FindAllメソッド
FindAllメソッドは、引数で指定した条件と一致するすべての要素を取得する。Findメソッドとの大きな違いは、条件に一致するすべての要素を返却する点。
var names = list.FindAll(s => s.Length <= 5); // 文字列が5以下の要素 foreach(var s in names) { Console.WriteLine(s); // Tokyo Parisが出力される }
RemoveAllメソッド
引数で指定した条件に一致する要素をリストから削除し、削除した要素数を返す。
var removedCount = list.RemoveAll(s => s.Contains("on")); // onが含まれる要素を削除 Console.WriteLine(removedCount); // 2が出力される foreach(var s in list) { Console.WriteLine(s); // london Hong Kongが削除されたリストが出力 }
ForEachメソッド
リストの各要素に対して、引数で指定した処理を実行する。
list.ForEach(s => Console.WriteLine(s)); // listの全要素を出力する
ConvertAllメソッド
リスト内の要素を別の型に変換し、変換された要素が格納されたリストを返す。
var lowerlist = list.ConvertAll(s => s.ToLower()); // listの全要素をToLowerメソッドで小文字に変換