假设我有一个 IEnumerable>
的数据结构,如下所示:
{
{ A, B }
{ 1, 2, 3 }
{ Z }
}
其中外部数组可以包含任意数量的内部数组。并且每个内部数组都可以独立地包含任意数量的元素。为了简单起见,假设没有数组为空。
我想将其转换为 IEnumerable> ,如下所示:
{ { A, 1, Z }, { A, 2, Z }, { A, 3, Z }, { B, 1, Z }, { B, 2, Z }, { B, 3, Z } }
其中包含原始结构中值的每个组合。因此,每个内部数组中的每个元素通过索引映射到原始外部数组中的元素/数组。
在 C# 中执行此操作的最简单方法是什么?
Say I have a data structure of IEnumerable<IEnumerable<object>>
like this:
{
{ A, B }
{ 1, 2, 3 }
{ Z }
}
Where the outer array can contain any number of inner arrays. And the inner arrays can each independently contain any number of elements. And assume, for the sake of simplicity, that no array will be empty.
And I want to transform it to a IEnumerable<IEnumerable<object>>
like this:
{ { A, 1, Z }, { A, 2, Z }, { A, 3, Z }, { B, 1, Z }, { B, 2, Z }, { B, 3, Z } }
Which contains every combination of the values from the original structure. So each element in each inner array maps by index to an element/array in the original outer array.
What is the simplest way to do that in C#?
发布评论
评论(2)
您可以使用 Eric Lippert 的 CartesianProduct 方法(取自 此处):
You could use
CartesianProduct
method by Eric Lippert for this (taken from here):