using System;
using System.Linq ;
public class Test
{
public static void Main( )
{
var list = new byte[ ] { 0 , 0 , 2 , 0 , 1 } ;
int LinqCnt = 0 ;
var tmp = list.Where ( x =>
{
LinqCnt++;
Console.WriteLine ( "In where: " + LinqCnt + ", x = " + x) ;
return x > 0 ;
} ) ;
Console.WriteLine ( "After where: " + LinqCnt) ;
if ( tmp.First ( ) == tmp.Last ( ) )
Console.WriteLine ( LinqCnt + " " ) ;
Console.WriteLine ( "After enumeration: " + LinqCnt) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKICAgICAgICB2YXIgbGlzdCA9IG5ldyBieXRlW10geyAwLCAwLCAyLCAwLCAxIH07CiAgICAgICAgaW50IExpbnFDbnQgPSAwOwogICAgICAgIHZhciB0bXAgPSBsaXN0LldoZXJlKHggPT4KICAgICAgICB7CiAgICAgICAgICAgIExpbnFDbnQrKzsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkluIHdoZXJlOiAiICsgTGlucUNudCArICIsIHggPSAiICsgeCk7CiAgICAgICAgICAgIHJldHVybiB4ID4gMDsKICAgICAgICB9KTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkFmdGVyIHdoZXJlOiAiICsgTGlucUNudCk7CgogICAgICAgIGlmICh0bXAuRmlyc3QoKSA9PSB0bXAuTGFzdCgpKQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShMaW5xQ250ICsgIiAiKTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkFmdGVyIGVudW1lcmF0aW9uOiAiICsgTGlucUNudCk7CiAgICB9Cn0=
stdout
After where: 0
In where: 1, x = 0
In where: 2, x = 0
In where: 3, x = 2
In where: 4, x = 0
In where: 5, x = 0
In where: 6, x = 2
In where: 7, x = 0
In where: 8, x = 1
After enumeration: 8