リストの全要素を処理し、別のリストに変換する方法の1つに「ConvertAll」メソッドがあります。
サンプルコードを交えて解説したいと思います。
説明
リストの全要素に指定した処理を行い、別のリストに変換する。
ポイント
・先行評価される
・変換に成功する場合は変換されたリストを返す
・変換に失敗する場合はFormatExceptionが発生する
遅延評価で同様のことを行いたい場合は「Select」を使います。
funcording.hatenablog.com
例
コード
using System; using System.Collections.Generic; namespace Sample { /// <summary> /// メインプログラム /// </summary> public class Program { /// <summary> /// ConvertAllの使い方 /// </summary> static void Main() { // リストを生成 var list = new List<string>(); // リストに値を追加 list.Add("A"); list.Add("B"); list.Add("C"); // 変換に成功する場合 List<string> result1 = list.ConvertAll(n => n + "1"); Console.WriteLine("変換に成功する場合1 : " + string.Join(", ", result1)); List<bool> result2 = list.ConvertAll(n => n.Contains("A")); Console.WriteLine("変換に成功する場合2 : " + string.Join(", ", result2)); // 変換に失敗する場合 try { List<int> result3 = list.ConvertAll(n => int.Parse(n)); } catch(Exception ex) { Console.WriteLine("変換に失敗する場合 : " + ex.GetType()); } } } }
出力
変換に成功する場合1 : A1, B1, C1 変換に成功する場合2 : True, False, False 変換に失敗する場合 : System.FormatException