Добавьте один столбец 2D-массива в список, используя AddRange

У меня есть один 2D-массив:

string[,] table = new string[100,2];

и я хочу добавить таблицу [,0] в список, что-то вроде этого

listbox1.Items.AddRange(table[,0]);

Как это сделать?

Изменить: я хочу знать, возможно ли это сделать с помощью AddRange


person a1204773    schedule 03.02.2013    source источник


Ответы (1)


Для удобства чтения вы можете создать метод расширения для массива.

public static class ArrayExtensions
{
    public static T[] GetColumn<T>(this T[,] array, int columnNum)
    {
        var result = new T[array.GetLength(0)];

        for (int i = 0; i < array.GetLength(0); i++)
        {
            result[i] = array[i, columnNum];
        }
        return result;
    }
}

Теперь вы можете легко добавлять диапазоны как срезы из массива. Обратите внимание, что вы создаете копию элементов исходного массива.

listbox1.Items.AddRange(table.GetColumn(0));
person Ilya Ivanov    schedule 03.02.2013
comment
Мне просто интересно, как я могу добавить первый столбец массива 2d в список, используя функцию AddRange - person a1204773; 04.02.2013
comment
поэтому я могу сделать это, только создав свою собственную функцию... хорошо, спасибо - person a1204773; 04.02.2013
comment
да, в .net нет ничего встроенного для этих целей. Но вы можете использовать зубчатые массивы, которые, по сути, являются массивами массивов, что в вашем случае будет string[][]. Затем доступ к table[2] вернет вам вторую строку. - person Ilya Ivanov; 04.02.2013