![](https://tech.mychma.com/wp-content/uploads/2022/05/hukidashi3_komaru-1.png)
For Eachでループしている回数を取得する方法ってないのかな?
![](https://tech.mychma.com/wp-content/uploads/2022/05/hukidashi1_normal.png)
![](https://tech.mychma.com/wp-content/uploads/2022/05/hukidashi1_normal.png)
![](https://tech.mychma.com/wp-content/uploads/2022/05/hukidashi1_normal.png)
ループごとに回数を加算することもできますが、LINQを利用することで自然にカウントを行うことができます。
目次
LINQを利用したFor Eachの回数取得
LINQのSelectメソッドを利用し、コレクションにインデックスを持つ匿名型のコレクションを作ることができます。これを利用して、ループ回数としてインデックスを利用します。
private void button1_Click(object sender, EventArgs e)
{
var names = new string[] { "田中", "佐藤", "森田" };
//Selectメソッドを利用してIndexを付与した匿名型のコレクションを生成する
foreach (var X in names.Select((it,Index) => new { it,Index }))
{
MessageBox.Show("Name:" + X.it + "| ループ回数:" + X.Index);
}
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim names = New String() {"田中", "佐藤", "森田"}
For Each X In names.Select(Function(it, Index) New With {it, Index})
MsgBox("Name:" & X.it & "| ループ回数:" & X.Index)
Next
End Sub
Tupleを利用してシンプルにする
Visual Studio2017以降では以下のようにTupleを利用してシンプルにコードを書くこともできます。
foreach (var X in names.Select((it,Index) => (it,Index) ))
{
MessageBox.Show("Name:" + X.it + "| ループ回数:" + X.Index);
}
For Each X In names.Select(Function(it, Index) (it, Index))
MsgBox("Name:" & X.it & "| ループ回数:" & X.Index)
Next
コメント