using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
static int counter = 0;
public static IEnumerable<T> CountedEnum<T>(IEnumerable<T> ee) {
foreach (var e in ee) {
counter++;
yield return e;
}
}
public static void Main() {
var Numbers= CountedEnum(new int[5]{5,2,3,4,5});
var query = from a in Numbers
where a== Numbers.Max (n => n)
select a;
foreach (var element in query)
Console.WriteLine (element);
Console.WriteLine("Count: {0}", counter);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICAKICAgIHN0YXRpYyBpbnQgY291bnRlciA9IDA7CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgSUVudW1lcmFibGU8VD4gQ291bnRlZEVudW08VD4oSUVudW1lcmFibGU8VD4gZWUpIHsKICAgICAgICBmb3JlYWNoICh2YXIgZSBpbiBlZSkgewogICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgIHlpZWxkIHJldHVybiBlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CiAgICAgICAgdmFyIE51bWJlcnM9IENvdW50ZWRFbnVtKG5ldyBpbnRbNV17NSwyLDMsNCw1fSk7CiAgICAgICAgdmFyIHF1ZXJ5ID0gIGZyb20gYSBpbiBOdW1iZXJzCiAgICAgICAgICAgIHdoZXJlIGE9PSBOdW1iZXJzLk1heCAobiA9PiBuKQogICAgICAgICAgICBzZWxlY3QgYTsKCiAgICAgICAgZm9yZWFjaCAodmFyIGVsZW1lbnQgaW4gcXVlcnkpCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lIChlbGVtZW50KTsKICAgICAgICAKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQ291bnQ6IHswfSIsIGNvdW50ZXIpOwogICAgfQp9