Zipメソッドによるマージ処理
プログラミングC# 第6版 8.3.6
二つのデータを一つのデータにまとめます。
Concatのように結合するのではなく、同じ要素で一まとめにするといった感じです。まぁ文章より実装を見た方が早いですね。
using System; using System.Linq; class Program { static void Main() { // それぞれ3要素の配列を用意。 int[] nums = new int[] {1,2,3}; string[] strs = new string[] {"foo","bar","baz"}; // numsとstrsをマージする var ret = nums.Zip(strs,(num,str) => new { id = num, name = str }); foreach(var item in ret) { Console.WriteLine("id={0} name={1}",item.id,item.name); } } }
$ main id=1 name=foo id=2 name=bar id=3 name=baz
ここでも匿名型が活躍です。それぞれ3要素の値を持つ配列をZipを使って匿名型で一まとめにするといった感じですね。
注意点としては、マージする配列の要素数が違う場合、多いほうの要素が捨てられてしまいます。
なのでそもそも論ですが、マージする場合は要素が同じもの同士でやるべきという感じですかね。