2010-11-28 2 views
2

Ich habe eine LINQ-Abfrage an eine Schaltfläche "Weiter" angehängt. Ich möchte die Ergebnisse in einigen Feldern innerhalb eines Formulars anzeigen. Ab jetzt kann ich nur ein Element zeigen, wenn ich die ‚Next‘ Taste drücken, wenn ich die Schaltfläche ‚Weiter‘ ein weiteres Mal nichtsWie werden LINQ-Ergebnisse angezeigt, wenn die Taste 'Weiter' gedrückt wird?

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++; 
     } 
    } 

drücken Grundsätzlich geschieht, drücken Sie jedes Mal, wenn ich auf die Schaltfläche ‚Next‘ Ich möchte die Elemente in der Liste anzeigen, bis sie das Ende der Liste erreicht.

Antwort

4

Sie initialisieren die Zählung jedesmal, wenn Next gedrückt wird, auf 1. Verschieben Sie die Deklaration von Variablen zu einem privaten Instanzfeld:

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

Sie müssen auch count ändern Null indiziert zu sein, da ElementAt nullindiziert. Initialisieren Sie einfach count auf 0 und ändern Sie Ihre Bedingung in if (count < elements.Count()).

Beachten Sie, dass Sie in Ihrem Code die LINQ-Erweiterungsmethoden direkt unter list verwenden können, ohne die Notwendigkeit zu erstellen, elements zu erstellen.

+0

btw habe ich zählen als 1 Ursache initialisiert Ich habe eine andere Taste, die das erste Element zeigt (0-Index) in der Liste, können Sie dann die Taste – esausilva

+0

@JGeZau ‚Weiter‘: OK dann, aber Ihr Zustand sollte nach wie vor sei '<' nicht '<='. – 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++; 
     } 
    } 
Verwandte Themen