给定两个不同类型的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