給定兩個不同類型的IEnumberables,迭代兩個列表以執行所有可能組合的操作的最佳實踐(考慮可讀性和可維護性)是什麼?枚舉不同類型的列表的所有組合
我最初的解決方案是使用嵌套的foreach循環,遍歷第一個IEnumerable,然後在該循環內迭代第二個IEnumerable,並將外部和當前循環的值傳遞給目標方法。例如:
enum ParamOne
{
First,
Second,
Etc
}
List<int> paramTwo = new List<int>() { 1, 2, 3 };
void LoopExample()
{
foreach (ParamOne alpha in Enum.GetValues(typeof(ParamOne)))
{
foreach (int beta in paramTwo)
{
DoSomething(alpha, beta);
}
}
}
我試圖用LINQ重構它,但結束了沒有明顯的優勢,似乎不那麼直觀的東西。這裏的搜索顯示了很多關於嵌套foreach的問題以迭代子屬性,但我找不到關於遍歷兩個不同列表的任何內容。
這證實了我的結論 - 我提出的LINQ過程基本上和你的一樣,我同意它看起來比嵌套'foreach'循環更加鈍。 – jball 2010-04-20 22:47:55
另一方面,如果你需要過濾掉一些東西,並可以得到LINQ,它可能是一個勝利。 – BCS 2010-05-18 14:47:42
@BCS:很明顯,我不能與這種說法爭辯,但我認爲最好與問題中提出的方案一致。否則,我們可以想出適合各種解決方案的假設情況是沒有限制的。換句話說,我寧願拿出一個解決方案來適應這種情況,而不是一個適合解決方案的場景;) – 2010-05-18 14:58:36