![](/img/trans.png)
[英]LINQ DataContext.SubmitChanges() in C# Reporting “Object reference not set to an instance of an object.”
[英]'Object reference not set to an instance of an object.' in C# linq to SQL
这是显示错误的代码行
var physician = (from userAccounts in myDb.Physicians
where userAccounts.Phy_UserName == txtUserName.Text
select userAccounts).FirstOrDefault();
setFirstName(physician.Phy_FName);
但是在我的二传手中,我有一个前提条件,如果它是一个空值,它将什么都不会做,但是它怎么会继续出现该错误呢? 这是我的设置员代码
public void setFirstName(string fName) {
if (fName == null)
{
}
else {
firstName = fName;
}
}
我猜您的医师查询返回null
。
然后,您尝试使用null
值调用属性Phy_FName
。
在这种情况下,在setFirstName
方法中检查null
值将不会保护您,因为Phy_FName
不是null
,而是physician
。
顺便说一句,你可能还需要检查fName
是不是在你的空字符串setFirstName
方法。 您可以使用if (!String.IsNullOrEmpty(fName))
来检查这两种情况
尝试这个:
var physician = (from userAccounts in myDb.Physicians
where userAccounts.Phy_UserName == txtUserName.Text
select userAccounts).FirstOrDefault();
if(physician != null)
{
setFirstName(physician.Phy_FName);
}
else
{
//Throw Error or any any other processing as needed.
}
我敢打赌physician
是空的。 您确定从查询中得到任何回报吗?
Phy_FName
属性将以任何一种方式进行评估,因此在尝试读取其属性之前,请确保physician
不为空。
在使用前,您需要检查physician
的价值:
if (physician != null)
setFirstName(physician.Phy_FName);
为了澄清我自己的错误假设,也许您也在考虑:
如果存在,则FirstOrDefault将返回默认值,但是对象的默认值为null
。 因此,您的Linq查询很可能返回医师的空值。 然后,您尝试其中的一个访问Phy_FName。
这是一个SO问题,可以更深入地阐明这一点: 为引用类型指定默认值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.