For Eachでループしている回数を取得する方法ってないのかな?
ループごとに回数を加算することもできますが、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
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
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
コメント