在C#中将一长串int [16]转换为16 long int []的最快方法是什么?

时间:2012-11-09 10:19:14

标签: c# list transpose

我有一个很长的(10000多个条目)结构列表,每个结构都包含一个int [16]。我想转置数据来创建16个int []数组,这些数组的长度超过10000个。基本上,我想转置数据。有没有比仅仅遍历列表并创建新条目更快的方法?

2 个答案:

答案 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];
    }
  }

}

尽管遍历大列表一次可能会更快。如果它真的很大,那么遍历该列表可能会导致分页,从而减慢速度。