🐡
【C#プログラミング】C#のZipメソッドとは?
はじめに
C#の勉強をしていたらZipメソッドという使えそうなメソッドがあったので紹介します。C#のZipメソッドは、2つのコレクション(列挙可能なシーケンス)を要素ごとに結合し、結果を新しいシーケンスとして返すLINQ拡張メソッドです。このメソッドは、2つのシーケンスを並列に処理して、それぞれの要素をペアにして結びつけます。
基本的な使い方
Zipメソッドのシグネチャは以下のようになっています。
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(
this IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> resultSelector
);
TFirst: 最初のシーケンスの要素の型
TSecond: 2番目のシーケンスの要素の型
TResult: 結果として得られるペアの要素の型
first: 最初の列挙可能なシーケンス
second: 2番目の列挙可能なシーケンス
resultSelector: 2つの要素を1つの結果に結合するための関数(通常はFunc<TFirst, TSecond, TResult>)
使用例
次の例では、2つの整数のリストをZipメソッドを使って結合し、対応する要素を足し合わせて新しいリストを作成しています。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
var list1 = new List<int> { 1, 2, 3, 4 };
var list2 = new List<int> { 5, 6, 7, 8 };
// Zipを使って2つのリストを結合し、それぞれの要素を足し合わせる
var result = list1.Zip(list2, (a, b) => a + b);
foreach (var item in result)
{
Console.WriteLine(item); // 出力: 6, 8, 10, 12
}
}
}
結果:
6
8
10
12
この例では、Zipはlist1とlist2の対応する要素を1対1で結びつけ、その後、(a, b) => a + bというラムダ式を使って、各ペアを足し合わせています。
おすすめ・参考書籍
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)
Discussion