2017-09-14 3 views
0

Je dispose d'un fichier csv Questions.csv contenant les éléments suivants:Pourquoi ma liste compte-t-elle 8 après l'ajout de seulement 4 éléments?

Question ID, A, B, C, 
1, TestA, TestB, TestC 
2, TestA, TestB, TestC 
3, TestA, TestB, TestC 

Dans mon code, j'ai la méthode suivante pour lire à partir du fichier et créer un objet Question en utilisant les valeurs, puis ajoutez l'objet Question à une liste.

Public Sub getQuestionsAndAnswers() 

Dim allQuestions As New List(Of Question) 

Using ioReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("Resources/Questions.csv") 

    ioReader.TextFieldType = FileIO.FieldType.Delimited 
    ioReader.SetDelimiters(",") 
    'ioReader.ReadFields() 
    While Not ioReader.EndOfData 

     Dim arrCurrentRow As String() = ioReader.ReadFields() 
     Dim aQuestion As Question = New Question(arrCurrentRow(0), arrCurrentRow(1), arrCurrentRow(2)) 
     allQuestions.Add(aQuestion) 

    End While 

End Using 

Quand je vérifie la taille de la liste à l'aide allQuestions.count() il est égal à 8. Pourquoi est-il dire 8 articles sont dans la liste quand il devrait y avoir seulement 4?

+0

Avez-vous essayé d'utiliser la fonctionnalité de débogage et de vérifier les éléments de la liste? Cela peut aider à trouver une solution à votre problème – Jaxi

+0

allQuestions.count() sera égal au nombre d'éléments dans votre liste. Comme Jaxi a dit de trouver les questions qui composent les 4 autres dans votre liste, vous devez déboguer. – Neal

+0

Votre code fonctionne comme prévu. Il doit y avoir quelque chose d'autre, dans le code non montré ... – Neal

Répondre

0

Sans idéal, cela fonctionne pour moi:

Public Sub getQuestionsAndAnswers() 
    Dim allQuestions As New List(Of Question) 

    Using ioReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("Resources/Questions.csv") 

     ioReader.TextFieldType = FileIO.FieldType.Delimited 
     ioReader.SetDelimiters(",") 
     'ioReader.ReadFields() 
     While Not ioReader.EndOfData 

      Dim arrCurrentRow As String() = ioReader.ReadFields(0).Split(",") 
      Dim aQuestion As Question = New Question(arrCurrentRow(0), arrCurrentRow(1), arrCurrentRow(2)) 
      allQuestions.Add(aQuestion) 

     End While 

    End Using 
End Sub 

Contrôlé dans mon code et cela, il renvoie 4 résultats, bien que je devais faire mon de Split supplémentaire parce que sans lui le code a jeté une exception en raison de le délimiteur ne fonctionne pas réellement ...