ASP.Net C# aggiunta di elementi all'array frastagliato
-
22-09-2019 - |
Domanda
sto cercando di aggiungere elementi agli array frastagliati, i dati vengono estratti da un datarowview, ho il seguente codice
foreach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index] = new string[noOfAnswersInQuestion];
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
il primo elemento viene aggiunto correttamente, ma quando il 2o elemento viene inserito nel primo elemento viene nuovamente impostato su null.quindi, ad esempio, la prima volta questo sarà l'aspetto dell'array
arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null
e la seconda volta apparirà l'array
arr[0][0] = null
arr[0][1] = answer 2
arr[0][2] = null
arr[0][3] = null
qualcuno può aiutarmi in questo!!
Grazie
Soluzione
Il tuo costruttore viene chiamato ogni volta (quindi il primo elemento viene impostato su null).Metti il costruttore dell'array di stringhe all'esterno del ciclo for-each (magari nel suo stesso ciclo.
Altri suggerimenti
Hai bisogno di un ciclo nidificato, perché si sta creando una nuova matrice ogni volta e soffiando via quello vecchio.
//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++;
}
Che cosa è l'indice? Non sembrano essere incrementarla, e ogni volta attraverso il vostro foreach si sta creando uno nuovo e il dumping nello stesso indice. Fondamentalmente riscrivere ogni volta.
Si potrebbe trovare più l'uso in un elenco utilizzando per raggiungere questo obiettivo matrice irregolare. Si farà l'aggiunta / rimozione di un po 'più facile, e potrebbe contribuire a un tocco di enumerazione.
Il mio approccio è quello di creare un hashset di array di stringhe quindi popolare a volontà, e alla fine, convertire ToArray ()
per es.
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