本記事では2つ以上のリスト (List) を結合し、1つのリストにする方法を紹介します。
List の初期化方法などに関しては、以下の記事で紹介しています。
【C#】配列, List, Dictionary の初期化方法まとめ
目次
リストを結合する3つの方法
1. foreach を使用するリストの結合
1つ目はforeach
を使ってリストを結合します。
以下のコードではlistB
を foreach で回し、そこで取得できる要素を listA
に追加しています。
using System;
using System.Collections.Generic;
public class Sample
{
public static void Main()
{
var listA = new List<int>() { 1, 2, 3 };
var listB = new List<int>() { 4, 5, 6 };
foreach (var listBItem in listB)
{
// listA に listB の要素を追加
listA.Add(listBItem);
}
// ForEach を使うこちらの方法も可能
// listB.ForEach(listBItem => listA.Add(listBItem));
Console.WriteLine(String.Join(",", listA));
// 出力 -> 1,2,3,4,5,6
}
}
ForEach
を使いコード1行で結合処理を行うことも可能です。
listB.ForEach(listBItem => listA.Add(listBItem));
2. List<T>.AddRange を使用するリストの結合
2つ目は List<T>.AddRange
を使って結合する方法です。
[リストA].AddRange([リストB])
とすることで、リストAの末尾にリストBが追加されます。
using System;
using System.Collections.Generic;
public class Sample
{
public static void Main()
{
var listA = new List<int>() { 1, 2, 3 };
var listB = new List<int>() { 4, 5, 6 };
// listA の末尾に listB を追加
listA.AddRange(listB);
Console.WriteLine(String.Join(",", listA));
// 出力 -> 1,2,3,4,5,6
}
}
結合してもリスト内の順番は維持され、リストBの内容が変更されることはありません。
3. Enumerable.Concat() を使用するリストの結合
3つ目はLINQ
クラスのメソッドであるEnumerable.Concat()
を使って結合する方法です。
LINQ
の使用にはコード内で using System.Linq;
の宣言が必要です。
using System;
using System.Linq;
using System.Collections.Generic;
public class Sample
{
public static void Main()
{
var listA = new List<int>() { 1, 2, 3 };
var listB = new List<int>() { 4, 5, 6 };
List<int> listC = listA.Concat(listB).ToList();
Console.WriteLine(String.Join(",", listC));
// 出力 -> 1,2,3,4,5,6
}
}
上記のコードではlistA
と listB
を結合し、それを listC
に代入しています。
LINQ
クラスに関しては以下の記事で詳しく紹介しています。
すべての方法に当てはまることですが、型の異なるリスト同士は結合できません。異なる型を結合しようとするとコンパイルエラーになります。
var listA = new List<int>() { 1, 2, 3 };
var listB = new List<string>() { "4", "5", "6" };
// コンパイルエラー:int 型のリストに string 型のリストは結合できない
listA.AddRange(listB);
参考資料
- List<T>.AddRange(IEnumerable<T>) メソッド | Microsoft.NET
- Enumerable.Concat<TSource> メソッド | Microsoft.NET
関連記事
【C#】要素に重複のないリストを作成する3つの方法【List】