ASP.Net С# добавление элементов в неровный массив

StackOverflow https://stackoverflow.com/questions/2320453

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top