using System.Collections.Generic;
static IEnumerable<string> Data () {
Console.WriteLine("data: evaluate");
Console.WriteLine("data: evaluate");
Console.WriteLine("data: evaluate");
Console.WriteLine("data: complete");
static (T value, int index) TraceSelect<T> (T value, int index) {
Console.WriteLine("select: evaluate");
Console.WriteLine("---- foreach loop");
foreach ((var value, int index) in Data().Select(TraceSelect))
Console.WriteLine($"foreach: {index} {value}");
Console.WriteLine("---- tolist + foreach method");
Data().Select(TraceSelect).ToList().ForEach(e => {
Console.WriteLine($"foreach: {e.index} {e.value}");
Console.WriteLine("----");