2010-11-28 6 views
2

「次へ」ボタンにLINQクエリが添付されています。私はフォーム内のいくつかのフィールドに結果を表示したい。以下のように、右今、私は唯一の私は、「次へ」ボタンを押したとき、私は「次へ」ボタンを押すと、1つのより多くの時間を何も「次へ」ボタンを押したときにLINQの結果を表示する方法は?

基本的
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++; 
     } 
    } 

、私は「次へ」ボタンを押すたびに発生していない一つの要素を表示することができますリストの最後に到達するまで、リストに要素を表示し続けたい。

答えて

4

[次へ]を押すたびにカウントが1に再初期化されます。プライベートインスタンスフィールドに変数宣言を移動:

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

ElementAtはゼロインデックス付きですので、あなたはまた、ゼロ・インデックスを作成するcountを変更する必要があります。 countを0に初期設定し、条件をif (count < elements.Count())に変更してください。

コードではlistのLINQ拡張メソッドを直接使用することができ、elementsを作成する必要はありません。

+0

ところで、私は1つの原因として初期化しカウントしている私は、リストの最初の要素(0インデックス)を表示し、別のボタンを持って、その後、「次へ」ボタン – esausilva

+0

@JGeZauを可能にします:OK、その後、しかし、あなたの状態がまだすべき'<'ではなく '<='でなければなりません。 – 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++; 
     } 
    } 
関連する問題