我正在尝试创建一个应用程序,您按下下一个按钮,它会显示列表中的下一个对象。在这种情况下,Employee的一个对象,我正在使用Linq To SQL。我读过MoveNext
,但我不知道它是如何工作的,我尝试了其他不起作用的东西(下面的代码)。基本上我想要一个下一个/上一个按钮来从db中获取员工。
以下是获取所有员工的代码:
public List<Employee> GetEmployees()
{
var q =
from a in db.GetTable<Employee>()
select a;
List<Employee> employeeList = q.ToList();
return employeeList;
}
按钮点击:
private void btnNext_Click(object sender, EventArgs e)
{
Increment();
LoadEmployee();
}
增量(方法)(这是我获取下一个对象的解决方案,但它根本不是最优的):
public void Increment()
{
if (con.GetEmployee(id) != null)
{
id++;
}
else
{
id += 2;
}
}
LoadEmployee(方法):
public void LoadEmployee()
{
Employee e = con.GetEmployees().FirstOrDefault(f => f.id.Equals(id));
tbId.Text = e.id.ToString();
tbFname.Text = e.Fname;
tbLname.Text = e.Lname;
tbDate.Text = e.Date;
}
答案 0 :(得分:1)
先生,试试这个
public void LoadEmployee()
{
Employee e = con.GetEmployees();
tbId.Text = e[id].id.ToString();
tbFname.Text = e[id].Fname;
tbLname.Text = e[id].Lname;
tbDate.Text = e[id].Date;
}
使用id作为集合的索引
答案 1 :(得分:0)
总结一下:
如果您在不使用游标的情况下查看SQL本身,我会将其翻译为“skip”和“take 1”。 Linq具有以下功能:
// initialize index
int x = -1;
// move next:
var currentEmployee = context.Employees.Skip(++x).FirstOrDefault();
if (currentEmployee == null)
{
// End.
}
// move prev:
if (--x < 0)
{
// move back past start
x = 0;
}
var currentEmployee = context.Employees.Skip(x).FirstOrDefault();
if (currentEmployee == null)
{
// No elements
}