I'm trying to use yield to return string on each iteration, but instead of a string, my res
has type {Namespace.Class.<getMutations>d__10}
. I get all the results I want, but they are returned all at once and not one by one. What am I doing wrong?
public static IEnumerable<string> generate(string mask)
{
foreach (List<string> pattern in list)
{
var res = getMutations(pattern);
yield return "result: " + res;
}
}
private static IEnumerable<string> getMutations(List<string> pattern)
{
IEnumerable<string> mutations = null;
switch (pattern.Count)
{
case 4:
mutations =
from m0 in pattern[0]
from m1 in pattern[1]
from m2 in pattern[2]
from m3 in pattern[3]
select "" + m0 + m1 + m2 + m3;
break;
case 5:
mutations =
from m0 in pattern[0]
from m1 in pattern[1]
from m2 in pattern[2]
from m3 in pattern[3]
from m4 in pattern[4]
select "" + m0 + m1 + m2 + m3 + m4;
break;
}
foreach (var mutation in mutations)
yield return mutation;
}