前に匿名型を使ってやりましたが Tuple 使った方が今風で値型なのでヒープ的にも優しいということでこうなりますね。
using System; using System.Linq; namespace ConsoleApp1 { class Program { staticvoid Main(string[] args) { var items = new[] { "item 1", "item 2", "item 3", }; foreach (var (item, index) in items.Select((x, i) => (x, i))) { Console.WriteLine($"{index}: {item}"); } } } }
実行結果。
0: item 1 1: item 2 2: item 3
岩永さんのサイトのほうが詳しいですね。