i 個の項目を持つ IEnumerable があり、それを反復して j 個の項目を持つ別の IEnumerable に対してテストする必要があります。ただし、i はランダムに繰り返され、j のすべての繰り返しで i とは異なる項目がテストされる可能性があります。
list_of_is = [ a, b, c, d, e, f, g ]
list_of_js = [ x, y, z ]
i をランダム化するのは些細なことだと仮定しましょう。
random_is[x] = [ e, b, f, g, d, a, c ]
random_is[y] = [ f, b, g, c, a, d, e ]
random_is[z] = [ d, g, f, c, b, e, a ]
ここで、基本的に必要なものは次のとおりです。
for (int i = 0; i < list_of_is.Count(); i++)
{
foreach (var j in list_of_js)
{
yield return j.DoSomething(random_is[j][i]);
}
}
出力は次のようになります。
e x、 f y、 d z、 b x、 b y、 g z、 ...
さて、random_is
変数を保存せずにこれを行う方法はありますか? どちらのリストも非常に大きく、大量のメモリを消費します。
編集: 明確にするために、順序は重要です。j の各パスは、random_i の次のアイテムのみを「処理」する必要があります。全体として、処理は次の順序で完了する必要があります。