リストの結合はC#プログラミングにおける基本的な操作です。この記事では、それぞれに独自の利点と使用例を持つ、リストを結合するためのいくつかの効果的な手法を探ります。単純な連結から、重複の削除や要素のペアリングなどのより高度な操作まで、さまざまなアプローチを検証します。
目次
AddRange()
を使用したリストの結合Concat()
(LINQ)を使用したリストの連結foreach
ループを使用した手動によるリスト結合Union()
(LINQ)を使用したリストの結合と重複の削除InsertRange()
を使用したリストの別のリストへの挿入Zip()
メソッドを使用した要素のペアリング- 結論
AddRange()
を使用したリストの結合
AddRange()
メソッドは、あるリストを別のリストの末尾に追加する直接的で効率的な方法を提供します。このメソッドは元のリストを変更します。
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.AddRange(list2);
Console.WriteLine("結合されたリスト:");
Console.WriteLine(string.Join(" ", list1)); // 出力:1 2 3 4 5 6
}
}
Concat()
(LINQ)を使用したリストの連結
LINQのConcat()
メソッドは、リストの連結に対する読み取り専用のアプローチを提供します。元のリストを変更することなく、両方の入力リストのすべての要素を含む新しいリストを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
var joinedList = list1.Concat(list2).ToList();
Console.WriteLine("結合されたリスト:");
Console.WriteLine(string.Join(" ", joinedList)); // 出力:1 2 3 4 5 6
}
}
foreach
ループを使用した手動によるリスト結合
foreach
ループを使用する手動アプローチは、より複雑な結合ロジックを扱う場合に特に役立つ、最大限の制御を提供します。
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
List<int> joinedList = new List<int>();
joinedList.AddRange(list1);
foreach (int num in list2)
{
joinedList.Add(num);
}
Console.WriteLine("結合されたリスト:");
Console.WriteLine(string.Join(" ", joinedList)); // 出力:1 2 3 4 5 6
}
}
Union()
(LINQ)を使用したリストの結合と重複の削除
Union()
メソッドは、重複エントリを排除しながら、2つのリストを効率的にマージします。
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 3, 4, 5 };
var joinedList = list1.Union(list2).ToList();
Console.WriteLine("結合されたリスト(重複削除済み):");
Console.WriteLine(string.Join(" ", joinedList)); // 出力:1 2 3 4 5
}
}
InsertRange()
を使用したリストの別のリストへの挿入
InsertRange()
を使用すると、指定したインデックスにある別のリストにリストを正確に挿入できます。
using System;
using System.Collections.Generic;
public class JoinLists
{
public static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 4, 5, 6 };
list1.InsertRange(2, list2); // インデックス2からlist2を挿入
Console.WriteLine("結合されたリスト:");
Console.WriteLine(string.Join(" ", list1)); // 出力:1 2 4 5 6 3
}
}
Zip()
メソッドを使用した要素のペアリング
Zip()
メソッドは、インデックスに基づいて2つのリストから対応する要素をペアにします。これは、関係のある対応を持つ要素を組み合わせる必要がある場合に役立ちます。
using System;
using System.Collections.Generic;
using System.Linq;
public class JoinLists
{
public static void Main(string[] args)
{
List<string> list1 = new List<string> { "A", "B", "C" };
List<int> list2 = new List<int> { 1, 2, 3 };
var zippedList = list1.Zip(list2, (str, num) => str + num).ToList();
Console.WriteLine("ペアリングされたリスト:");
Console.WriteLine(string.Join(" ", zippedList)); // 出力:A1 B2 C3
}
}
結論
C#はリスト操作のための豊富なツールを提供します。メソッドの選択は、タスクの具体的な要件に大きく依存します。元のリストの変更、重複の削除、対応する要素のペアリングが必要かどうかを検討して、最も適切なアプローチを選択してください。