Как добавить строковый массив в массив строкового массива в списке строк? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть string[,] с установленным количеством string[], которые остаются неизменными, и я хочу выбрать несколько из них и поместить их в list<string[]> (я использую список, чтобы его можно было расширять).Но list<string[]> не примет string[] из string[,].

string[,] testArray =
{
    {"testValue1", "testValue1.1"}
    {"testValue2", "testValue2.1"}
    {"testValue3", "testValue3.1"}
}

List<string[]> testList = new List<string[]>();

testList.Add(testArray[1]) //error: wrong number of indicaters inside[]
testList.Add(testArray[1,1]) //error: cannot convert from string to string[]

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Либо вы можете использовать неровный массив или цикл для 2d-массива:

Неровный массив:

new string[] {"testValue1", "testValue1.1"},
new string[] {"testValue2", "testValue2.1"},
new string[] {"testValue3", "testValue3.1"}
};

List<string[]> testList = new List<string[]>();

testList.Add(testArray[1]); //second row of jagged array

2d-массив:

string[,] testArray =
{
 {"testValue1", "testValue1.1"},
 {"testValue2", "testValue2.1"},
 {"testValue3", "testValue3.1"}
};

List<string[]> testList = new List<string[]>();
string[] secnd_rw=new string[testArray.GetLength(1)] ;
for (int i = 0; i < testArray.GetLength(1); i++)
{
    secnd_rw[i] = testArray[1,i];
}
testList.Add(secnd_rw); //second row of 2d array
0 голосов
/ 10 февраля 2019

Имеется 2D-массив, а не зубчатый массив (массив массивов).

Вы не можете напрямую ссылаться на всю строку 2D-массива (в отличие отзазубренный массив).Простое решение - использовать зубчатый массив string[][], но если вы явно не хотите этого делать, вы можете добиться того же самого, зацикливаясь на строке двумерного массива и помещая его в другой массив

* 1007.*
0 голосов
/ 10 февраля 2019

У меня есть строка [,] с заданным количеством строк []

На самом деле это не так, потому что вы используете многомерный массив вместо зубчатого массива.Если вы используете [,], вы не можете из коробки взять всю строку, как если бы вы использовали [][].

Jagged

string[][] testArray =
{
    new [] {"testValue1", "testValue1.1"},
    new [] {"testValue2", "testValue2.1"},
    new [] {"testValue3", "testValue3.1"}
};

Console.WriteLine(string.Join(", ", testArray[0])); //testValue1, testValue1.1

2D Array

string[,] testArray =
{
    {"testValue1", "testValue1.1"},
    {"testValue2", "testValue2.1"},
    {"testValue3", "testValue3.1"}
};

Console.WriteLine(string.Join(", ", testArray.GetColumn(0))); //testValue1, testValue1.1

public static class ArrayExt
{
    public static IEnumerable<string> GetColumn(this string[,] array, int column)
    {
        return Enumerable.Repeat(column, array.GetLength(1))
            .Zip(Enumerable.Range(0, array.GetLength(1)), (x,y) => new { X = x, Y = y })
            .Select(i => array[i.X, i.Y]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...