2010-11-28 27 views
2

J'ai une requête LINQ attachée à un bouton 'Suivant'. Je veux afficher les résultats dans certains champs à l'intérieur d'un formulaire. En ce moment, je ne peux que montrer un élément lorsque j'appuie sur le bouton « Suivant », quand j'appuie sur le bouton « Suivant » un rien plus de temps se passeComment continuer à afficher les résultats LINQ lorsque le bouton 'Suivant' est enfoncé?

private void btnNext_Click(object sender, EventArgs e) 
    { 
     btnPrevious.Enabled = true; 
     int count = 1; 

     var elements = 
      from element in list 
      select element; 

     if(count <= elements.Count()) 
     { 
      FName.Text = elements.ElementAt(count).fName; 
      LName.Text = elements.ElementAt(count).lName; 
      Phone.Text = elements.ElementAt(count).Phone; 
      Gpa.Text = elements.ElementAt(count).Gpa.ToString(); 

      count++; 
     } 
    } 

En fait, chaque fois que j'appuyez sur le bouton « Suivant » Je veux continuer à afficher les éléments de la liste jusqu'à la fin de la liste.

Répondre

4

Vous réinitialisez votre compte à 1 à chaque fois que vous appuyez sur Suivant. Déplacer la déclaration de variable à un champ d'instance privée:

class MyApp { 
    // ... 
    private int count = 0; 
} 

Vous devez également modifier count à zéro indexées, car ElementAt est zéro indexé. Il suffit d'initialiser count à 0 et de changer votre condition pour lire if (count < elements.Count()).

Notez que dans votre code, vous pouvez utiliser les méthodes d'extension LINQ sur list directement, en évitant la nécessité de créer elements.

+0

BTW j'ai compter initialisé 1 parce que j'ai un autre bouton qui affiche le premier élément (indice 0) dans la liste, permet alors le bouton « Suivant » – esausilva

+0

@JGeZau: OK alors, mais votre condition doit encore être '<' pas '<='. – Cameron

0
 int count = 1;  
private void btnNext_Click(object sender, EventArgs e) 
    { 
     btnPrevious.Enabled = true; 

     var elements = 
      from element in list 
      select element; 

     if(count <= elements.Count()) 
     { 
      FName.Text = elements.ElementAt(count).fName; 
      LName.Text = elements.ElementAt(count).lName; 
      Phone.Text = elements.ElementAt(count).Phone; 
      Gpa.Text = elements.ElementAt(count).Gpa.ToString(); 

      count++; 
     } 
    }