Что такое selectMany.ToArray()
метод? Это встроенный метод в C#
?Преобразование 2-мерной матрицы
Мне нужно преобразовать двумерный массив в одномерный массив.
Что такое selectMany.ToArray()
метод? Это встроенный метод в C#
?Преобразование 2-мерной матрицы
Мне нужно преобразовать двумерный массив в одномерный массив.
SelectMany - оператор проекции, метод расширения, предоставляемый пространством имен System.Linq.
Он выполняет от одного до многих элементов проекцию над последовательностью, позволяя вам «сгладить» полученные последовательности в одну.
Вы можете использовать его таким образом:
int[][] twoDimensional = new int[][] {
new int[] {1, 2},
new int[] {3, 4},
new int[] {5, 6}
};
int [] flattened = twoDimensional.SelectMany(x=>x).ToArray();
Если вы имеете в виду неровными массив (T[][]
), SelectMany
является вашим другом. Однако, если вы имеете в виду прямоугольного массив (T[,]
), то вы можете просто перечислить данные о дате по foreach
- или:
int[,] from = new int[,] {{1,2},{3,4},{5,6}};
int[] to = from.Cast<int>().ToArray();
Эта статья, http://stackoverflow.com/questions/5132397/fast-way-to-convert-a-two-dimensional-array-to-a-list-one-dimensional, подробно описывает метод foreach а также некоторые показатели производительности. – ShawnFeatherly
точке педанта; это не то, что я бы назвал двумерным массивом - это зубчатый массив ... –
@MarcGravell Разве это не 2D-массив с зубцами? Очевидно, что зубчатый массив не является прямоугольным массивом или массивом «куб». Но он все еще имеет степень измерения. Сказать, что 2D-массив не указывает зубчатый или геометрический/прямой. – barlop
@barlop возможно, но в конечном итоге «массив» здесь будет относиться к внешнему массиву, который является вектором ссылок; ясность действительно дает понять, что она сложнее, и я согласен с тем, что в некотором смысле «2D» можно было бы использовать, в отличие от, например, «int [] [] []'. В конечном счете, именование жестко :) –