【发布时间】:2020-10-16 15:54:27
【问题描述】:
即使有类似的问题和答案,但我无法让它发挥作用。 我想显示最后一条记录,我的意思是我表中的最后一个员工,并在 dataGridview 中显示他/她 名字、姓氏等。当我以 Windows 形式重新加载此功能时,我收到此错误
“索引超出范围。必须为非负数且小于集合的大小”
这是我的代码,但无法正常工作。提前谢谢你
var employee = db.Employees.
OrderByDescending(s =>s.EmployeeId).
Select(b => new
{
Id = b.EmployeeId,
FirstName = b.FirstName,
LastName = b.LastName,
Birthday = b.BOF
}).First();
if(employee != null)
{
dgvEmployee.DataSource = employee;
dgvEmployee.Columns[0].Visible = false;
}
【问题讨论】:
-
哪一行抛出异常?调试那个“服务”数据源。确保 dgvEmployee 有列。该标题与您的问题不完全相符。
-
我建议您单步调试代码并找出错误的确切位置并使用
FirstOrDefault()。如果序列中没有元素,First()将抛出InvlidOperationException。 -
@JohnG ,对不起,我输入了错误的文字,我刚刚从 service 编辑到了 employee ,但仍然是同样的错误
-
你获得了最后一条记录,但你后来失败了。这个问题太明显了,调试一下。
dgvEmployee.Columns[0]- 可能是你的问题,网格没有刷新行。
标签: c# winforms linq datagridview