【发布时间】:2021-06-30 00:04:33
【问题描述】:
有没有办法将 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)。有没有更好的办法解决这个问题?
【问题讨论】:
标签: c# arrays iterator enumerable