我有一个很长的(10000多个条目)结构列表,每个结构都包含一个int [16]。我想转置数据来创建16个int []数组,这些数组的长度超过10000个。基本上,我想转置数据。有没有比仅仅遍历列表并创建新条目更快的方法?
答案 0 :(得分:0)
所以你只想要一个int [16]的数组?
也许linq可以做到这一点
var newArray = fooArray.Select(foo => foo.IntVal).ToArray();
答案 1 :(得分:0)
这样的事情应该做你
struct Widget
{
public int[] Values = new int[16];
}
public int[][] TransposeWidgets( List<Widget> widgets )
{
int cols;
int[][] result = new int[][];
for ( int row = 0 ; i < 16 ; ++row )
{
results[row] = new int[ widgets.Count ];
for ( int col = 0 ; col < widgets.Count ; ++col )
{
result[row][col] = widgets[col].Values[row];
}
}
}
尽管遍历大列表一次可能会更快。如果它真的很大,那么遍历该列表可能会导致分页,从而减慢速度。