C#で1つのforeach文を使って2つのリストや配列を同時に反復処理する方法
C#では、LINQのZip()メソッドを活用することで、2つのコレクション(リストや配列)を1つのforeach文で同時に反復処理できます。本記事では、その具体的な手順をサンプルコード付きで解説します。
1. 反復処理する2つの配列を用意する
まず、処理対象となる2つの配列を定義します。ここでは、int型の数値を持つ配列と、string型の文字列を持つ配列をそれぞれ用意します。
var val = new [] { 20, 40, 60};
var str = new [] { "ele1", "ele2", "ele3"};
2. Zip()メソッドで2つの配列を並行して処理する
次に、Zip()メソッドを使用して、2つの配列を対応する要素ごとに結合します。このメソッドは、両方のコレクションから同じ位置にある要素をペアとして取り出し、引数に渡したラムダ式に基づいて新しいオブジェクトを生成します。
var res = val.Zip(str, (n, w) => new { Number = n, Word = w });
上記のコードでは、int型要素を持つvalとstring型要素を持つstrが組み合わされ、「Number」と「Word」というプロパティを持つ匿名型のコレクションが生成されます。
3. foreach文で反復処理を行う
結合が完了したら、通常どおりforeach文を使ってコレクションを反復処理するだけです。以下に完全なサンプルコードを示します。
サンプルコード
using System;
using System.Collections.Generic;
using System.Linq;
public class Demo {
public static void Main() {
var val = new [] { 20, 40, 60};
var str = new [] { "ele1", "ele2", "ele3"};
var res = val.Zip(str, (n, w) => new { Number = n, Word = w });
foreach(var a in res) {
Console.WriteLine(a.Number + a.Word);
}
}
}
実行結果
20ele1 40ele2 60ele3
補足:要素数が異なる場合の挙動
なお、Zip()メソッドは2つのコレクションのうち要素数が少ない方に合わせて処理を終了します。片方の配列が短い場合でもエラーにはなりませんが、余分な要素は無視される点に注意してください。
-
JavaScriptで2つの配列を乗算する方法|forループとmap()の実装例
JavaScriptで2つの配列の各要素同士を乗算し、その結果を新しい配列として取得する方法を解説します。基本的にはforループでインデックスを順番に処理しながら、対応する位置にある要素同士を掛け合わせていくシンプルなアプローチです。 2つの配列を乗算するサンプルコード 以下の例では、「CLICK HERE」ボタンをクリックすると、配列 arr と arr1 の対応する要素が乗算され、結果が新しい配列 multArray に格納された上で画面に表示されます。 <!DOCTYPE html> <html lang=en> <head> <meta ch
-
キーボードとマウス1つで複数のPCを操作する方法【無料ソフト・KVM切替器】
キーボードとマウスを1セットだけで、2台以上のパソコンを操作したいとお考えなら、この記事はまさにうってつけです。 プログラミング、動画レンダリング、グラフィックデザインなど、業務内容によっては複数台のパソコンを使い分ける必要がある方も多いでしょう。しかし、それぞれのPCに個別のキーボードとマウスを用意するのは、デスクスペースを圧迫するだけでなく、作業効率の面でも大きなデメリットになります。 本記事では、専用ツールを活用してデスク上のキーボードとマウスを最小限に抑え、1セットで複数台のパソコンを快適に操作する方法をいくつかご紹介します。 1つのキーボードとマウスを複数のPCで共有する3つの方法