2017-02-24 1 views
0

Bonjour les gars, je suis avec un problème que j'ai besoin de vérifier si un objet DataTableReader a plus de résultats sur la prochaine fois que j'appelle Read() fonction. Mon code est comme ça:DataTableReader vérifier si avoir le résultat suivant C#

 DataTable workTable = new DataTable(); 
     workTable.Columns.Add("1"); 
     workTable.Columns.Add("2"); 
     DataRow workRow; 

     for (int i = 0; i <= 9; i++) 
     { 
      workRow = workTable.NewRow(); 
      workRow[0] = i; 
      workRow[1] = "CustName" + i.ToString(); 
      workTable.Rows.Add(workRow); 
     } 
     var test2 = workTable.CreateDataReader(); 

     while (test2.Read()) 
     { 
      Debug.WriteLine(test2[1]); 
      //I need to know if the test2 instance Read function 
      //will return false next time I call it without move the current 
      //cursor.. 
      Debug.WriteLine("Have next?: "+ test2.HasNextResult()); //something like that, of some workaround... 
     } 

Y at-il de toute façon de le faire ?? Juste pour vous les gars, je le fais parce que je me moque (pour le test d'unité) d'un objet d'ensemble d'enregistrement COM qui a la propriété EOF et la méthode MoveNext. Le EOF vérifie si la ligne actuelle est vide et la méthode MoveNext déplace le curseur en cours vers l'enregistrement suivant, et j'utilise une instance de DataTableReader pour remplacer ces opérations.

Répondre

0

L'élément de données datatablereader a une méthode NextResult qui retournera un booléen basé sur si le lecteur a plus de résultats.

vous pouvez l'utiliser en tant que tels

do 
{ 
    var x = reader.Read(); 
    ...Rest of your code 
} while (reader.NextResult()); 
+0

Cette solution ne fonctionne pas. Juste passé à travers une fois, puis laissé l'instruction 'do {} while'. La méthode 'NextResult' a renvoyé false, mais j'ai ajouté 9 éléments (comme le code le montre dans la description de ma question) –