ASP.Net С# добавление элементов в неровный массив
-
22-09-2019 - |
Вопрос
я пытаюсь добавить элементы в неровный массив, данные извлекаются из datarowview, у меня есть следующий код
foreach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index] = new string[noOfAnswersInQuestion];
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
первый элемент добавляется нормально, но когда вставляется второй элемент, первый элемент снова устанавливается на ноль.так, например, в первый раз массив будет выглядеть так
arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null
и во второй раз массив будет выглядеть так
arr[0][0] = null
arr[0][1] = answer 2
arr[0][2] = null
arr[0][3] = null
может кто-нибудь помочь мне в этом !!
Спасибо
Решение
Ваш конструктор вызывается каждый раз (следовательно, первый элемент имеет значение null).Поместите конструктор строкового массива за пределы цикла for-each (возможно, в отдельный цикл.
Другие советы
Вам нужен вложенный цикл, потому что вы каждый раз создаете новый массив и удаляете старый.
//souround with a loop that increments index whenever you want to create a new group of questions
answersJArray[index] = new string[noOfAnswersInQuestion];
foreach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
Что такое индекс?Кажется, вы не увеличиваете его, и каждый раз при выполнении foreach вы создаете новый и сбрасываете его в тот же индекс.В общем, каждый раз переписываю.
Возможно, вам будет более полезно использовать список для создания этого зубчатого массива.Это немного облегчит добавление/удаление и может помочь в перечислении.
Мой подход состоит в том, чтобы создать хэш-набор строковых массивов, затем заполнить его по своему желанию и в конце преобразовать ToArray().
например
HashSet<string[]> data = new HashSet<string[]>();
data.Add(new string[] { "mode", "create" });
data.Add(new string[] { "title", this.TextBoxCreateTitle.Text });
data.ToArray(); // our jagged array