[C# LINQ] 配列やSelect、Whereした結果をリストに変換する

LINQのToListメソッドを使うと配列やSelect、Whereメソッドの結果(IEnumerable型)をList型に変換することができます。

スポンサーリンク

ToListメソッドの使い方

ToListメソッドに引数はありません、戻り値は変換されたリストが返ってきます。

ToListメソッドをSelect、Whereメソッドの結果に対して使った場合、即時評価されます。そのためSelect、Whereメソッドをすぐに実行しておきたいときにも使われます。

using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
    public static void Main()
    {
        // 配列の宣言と初期化
        SampleData[] ary = new SampleData[] {
            new SampleData { Data1 = 10, Data2 = 2, Data3 = 3 },
            new SampleData { Data1 = 20, Data2 = 5, Data3 = 6 },
            new SampleData { Data1 = 30, Data2 = 8, Data3 = 9 },
        };

        // 配列をリストに変換
        List<SampleData> list = ary.ToList();

        // Selectしてその結果をリストに変換
        // ↓はSelectした結果が匿名クラスのリストになるため var でうけとる
        var selectList = list.Select(sd => new { sd.Data1, sd.Data3 }).ToList();

        // Seletしたリストを表示
        Console.WriteLine("Seletしたリストを表示");
        foreach (var item in selectList) {
            Console.WriteLine($"Data1={item.Data1}, Data3={item.Data3}");
        }

        // Whereしてその結果をリストに変換
        List<SampleData> whereList = list.Where(sd => sd.Data2 % 2 == 0).ToList();

        // Whereしたリストを表示
        Console.WriteLine("Whereしたリストを表示");
        foreach (var item in whereList)
        {
            Console.WriteLine($"Data1={item.Data1}, Data2={item.Data2}, Data3={item.Data3}");
        }
    }
}

class SampleData
{
    public int Data1 { get; set; }
    public int Data2 { get; set; }
    public int Data3 { get; set; }
}
Seletしたリストを表示
Data1=10, Data3=3
Data1=20, Data3=6
Data1=30, Data3=9
Whereしたリストを表示
Data1=10, Data2=2, Data3=3
Data1=30, Data2=8, Data3=9

C# プログラミング講座に戻る

コメント

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