Fun Coding

学んだことを記録していきます!

【C#】リストの全要素を処理して変換する方法(ConvertAll)

リストの全要素を処理し、別のリストに変換する方法の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