3つのリストを繰り返し処理し、各組み合わせを処理する必要があります。最も外側および第2レベルのループ(list1
/list2
)の順序は、いくつかの順序規則に依存します。 また、前回のループ(list3
)の前後にいくつかのロジックがあります。 ProcesPair
メソッドは3つのアイテムをすべて使用し、その順序に依存します。C#2つのリストを交換 - 交換可能な内部/外部ループ
if (order == Order.Right)
{
foreach (var a in list1)
{
foreach (var b in list2)
{
DoSomethingBefore();
foreach (var c in list3)
{
ProcessPair(a, b, c);
}
DoSomethingAfter();
}
}
}
else if (order == Order.Down)
{
foreach (var b in list2)
{
foreach (var a in list1)
{
DoSomethingBefore();
foreach (var c in list3)
{
ProcessPair(a, b, c);
}
DoSomethingAfter();
}
}
}
何とかエレガントにすることはできますか?私はまあ、どのようにコード内のループを減らすために、Zip
のようなものが、お互いに機能します。
が 'ProcessPair'使用を行い、従ってサンプルコードの等価物は、このようにすることができどのようにして 'c'? –
ああ、私はそれを修正した、ありがとう。 – Majak
list1とlist2の項目が互換性のある型の 'IEnumerable'であった場合、前にlist1とlist2の代入をスワップするだけでループを書くことができます。 – dlatikay