有没有方法可以将
IEnumerable<int[]>
转换为 IEnumerable<int>[]
?具体来说,我有一个如下的 IEnumerable: IEnumerable<int[]> data = new List<int[]>()
{
new int[]{1,11},
new int[]{2,22},
new int[]{3,33},
new int[]{4,44},
// ...
// ...
};
我希望将其转化为以下形式:
IEnumerable<int>[] data = new List<int>[]
{
new List<int>(){1,2,3,4 },
new List<int>(){11,22,33,44}
};
我目前想到的唯一解决方案如下:
public static IEnumerable<int>[] Convert(IEnumerable<int[]> data)
{
var length = data.First().Length;
var output = new List<int>[length];
for (int i = 0; i < length; i++)
output[i] = new List<int>();
foreach (var entry in data)
{
for (int i = 0; i < length; i++)
{
output[i].Add(entry[i]);
}
}
return output;
}
这种方法并非理想,因为我需要遍历整个数据集。期望的解决方案是利用LINQ或内置的迭代器模式功能(yield return
)。有没有更好的解决方法?