[C#]リストのforeachループでインデックス(index)を取得するには?

C#

どうも、ちょげ(@chogetarou)です。

リスト(list)のforeachループでインデックス(index)を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)のforeachループでインデックス(index)を取得するには、Select()を使います。

まず、System.Linqを呼び出します。

using System.Linq;

次に、foreachの変数を「(値、インデックス)」のタプルにします。

foreachのinの後で、リストからSelect()を呼び出します。

そして、Select()の引数に、2つの引数をそのまま返すラムダ式を指定します。

foreach (var (value, index) in myList.Select((value, index) => (value, index)))
{
     /* ループ処理 */
}

上記のforeachループは、ループ変数でリスト(List)の値とインデックスを取得できます。

もし、変数を1つだけにする場合は、変数のプロパティでリストの値とインデックスを取得します。

foreach (var item in myList.Select((value, index) => (value, index)))
{
     /* 
         ループ処理 
         item.valueでリストの値を取得
         item.indexでリストのインデックスを取得
     */
}

使用例

using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
    public static void Main()
    {
        List<string> myList = new List<string>() { "a", "b", "c", "d", "e" };

        foreach (var (value, index) in myList.Select((value, index) => (value, index)))
        {
            Console.WriteLine("{0}:{1}", index, value);
        }
    }
}

/*
    出力:
    0:a
    1:b
    2:c
    3:d
    4:e
*/

コメント

タイトルとURLをコピーしました