foreach in foreach c# -


query: 0 4 1 0 0

secquery: 1 1 0 0 3

i need compare elements: 0 , 1, 4 , 1 , 1 , 0 ,0 , 0 , 0 , 3. break stops second foreach.

i try this:

foreach (var in query) {     bool flag = false;     foreach (var b in secquery)     {         if (b > a)         {             count++;         }         flag = true;         break;     }     if (flag) continue; } 

and this:

foreach (var in query) {     foreach (var b in secquery)     {         if (b > a)         {            count++;         }      //break; continue;     } } 

you not need nested loop comparing parallel arrays. need single loop iterates both arrays @ same time - example, index:

for (var = 0 ; != query.length ; i++) {     var first = query[i];     var second = secquery[i];     console.writeline("comparing {0} , {1}", first, second); } 

the above code assumes both arrays have same number of elements.

you can pair elements using linq's zip method:

foreach (var p in query.zip(secquery, (first, second) => new {first, second}) {     console.writeline("comparing {0} , {1}", p.first, p.second);         } 

if need count of items in query greater secquery, compute this:

var res = query     .zip(secquery, (first, second) => first > second)     .count(cmp => cmp); 

Comments