大方の場合
For Each item in collection
debug.print(item .xxx)
Next
で済むけど、何番目なのか知りたい時があるが、
Dim index As Integer=0
For Each item in collection
debug.print($"{index}:{item .xxx}") ' あ、indexを+1しないといけない
index += 1 ’改造中に消えたり、ココを通らなくなるとメンドィ
Next
パッと見、ゴチャったコードになってしまう。
Enumerable.Select メソッドでcollectiomの各要素をindex付のテンポラリィなクラスに差替えられるので、
for each の in で使ってみると・・・
For Each entry In collection.Select(Function(item, index) New With {item, index})
Debug.Print($"{entry.index}:{entry.item.xxx}")
Next
entryは collectionの要素であるitemとindexのプロパティを持ち、entry.indexには、0から始まる整数が、entry.itemにはcollectionの各要素が入る。
また、EnumerableにはSelectのほかにもDistinct、Where、OrderByやUnionまであるから、SQL風に書こうとすればできないこともないかもしれない。