foreachでindexが知りたい

foreachで今何回目のループかが知りたい時にカウント用の一時変数を作らない方法

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配列
            List<string> list = new List<string> { "a", "i", "u", "e", "o" };

            // 値とインデックスのペアをループ処理
            foreach (var item in list.Select((value, index) => new { value, index }))
            {
                // 今、何回目かが分かる
                Console.WriteLine("value = {0}, index = {1}", item.value, item.index);
            }
        }
    }
}

C#7だとタプルを使ってもっとスマートに記述できるらしい。