Online C# Compiler

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var myList = new List<int>() { 1, 2, 3, 4, 5, 6 }; var myEnumerable = new SingleEvaluationEnum<int>( myList.Where(p => { Console.Write($"{p} "); return p > 2; }) ); Console.WriteLine(""); Console.WriteLine("Starting"); myEnumerable.Get().First(); Console.WriteLine(""); myEnumerable.Get().Skip(1).First(); } } class SingleEvaluationEnum<T> { private IEnumerable<T> Enumerable; public SingleEvaluationEnum(IEnumerable<T> enumerable) { Enumerable = enumerable; } public IEnumerable<T> Get() { if (!(Enumerable is List<T>)) Enumerable = Enumerable.ToList().AsEnumerable(); return Enumerable; } }