[英]c# / LINQ - Average the number of enquiries per day, week and month over a time period
[英]Update enquiries for C#
private void btnUpdate_Click(object sender, EventArgs e)
{
using (testEntities Setupctx = new testEntities())
{
var toBeUpdatedStart = txtStart.Text;
var toBeUpdatedStop = txtStop.Text;
shifthour updateShiftStart;
shifthour updateShiftStop;
updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdatedStart);
updateShiftStop = Setupctx.shifthours.FirstOrDefault(p => p.shiftTiming_stop == toBeUpdatedStop);
updateShiftStart.shiftTiming_start = txtStart.Text; <-- error prompt here
updateShiftStop.shiftTiming_stop = txtStop.Text;
Setupctx.SaveChanges();
txtStart.Text = "";
txtStop.Text = "";
MessageBox.Show("Shift Timing Has Been Updated.");
}
}
嗨,有人知道此代码有什么问题吗? 更多信息:这是为员工编辑轮班时间。 当我输入新的开始和停止时间时,错误提示并说“对象引用未设置为对象的实例”。
您的updateShiftStart
为null,这就是为什么您遇到此异常的原因。 由于您使用的是FirstOrDefault
因此它将返回第一个结果,如果未找到则返回null,并且您的搜索未返回任何内容,这就是为什么将updateShiftStart分配为null的原因,因此是异常。 您可以在使用该值之前先进行检查。
if(updateShiftStart != null)
{
updateShiftStart.shiftTiming_start = txtStart.Text;
}
您的比较, (u => u.shiftTiming_start == toBeUpdatedStart);
可能是。 由于您正在比较字符串,因此可以使用
updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start.Equals(toBeUpdatedStart));
您可以使用StringComparison.InvariantCultureIgnoreCase
忽略Equals中的大小写
使用FirstOrDefault()使用查询来设置变量updateShiftStart和updateShiftStop,这可能会导致NULL引用。
updateShiftStart
为null,表示该行
updateShiftStart = Setupctx.shifthours.FirstOrDefault(u => u.shiftTiming_start == toBeUpdatedStart);
无法返回对象。 FirstOrDefault
将查找它可以找到的第一个项目,或者为null。 如果您的代码绝对要求updateShiftStart
不为null,则应在操作后检查,或改用First
。
私人无效btnUpdate_Click(对象发送者,EventArgs e){使用(testEntities Setupctx = new testEntities()){int ID = Int32.Parse(lblID.Text); var SHquery =(从Setupctx.shifthours中的sh中,其中sh.idShiftHours == ID选择sh).First();
SHquery.shiftTiming_start = txtStart.Text;
SHquery.shiftTiming_stop = txtStop.Text;
Setupctx.SaveChanges();
txtStart.Text = "";
txtStop.Text = "";
this.Edit_Shift_Hours_Load(null, EventArgs.Empty);
MessageBox.Show("Shift Timing Has Been Updated.");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.