我有一个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++;
}
}
基本上,每次按下“下一步”按钮,我都要继续显示列表中的元素,直到它到达列表的末尾。
答案 0 :(得分:4)
每按一次Next,您就会将计数重新初始化为1。将变量声明移动到私有实例字段:
class MyApp {
// ...
private int count = 0;
}
您还需要将count
更改为零索引,因为ElementAt
为零索引。只需将count
初始化为0,然后将条件更改为if (count < elements.Count())
。
请注意,在您的代码中,您可以直接使用list
上的LINQ扩展方法,而无需创建elements
。
答案 1 :(得分: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++;
}
}