问题描述
我遇到的问题是,当数据表的行/列中没有数据时,我仍然得到一个计数,依次getData != null && getData.Count() > 0
默认为true,然后抛出NullRefrenceError
,因为转到循环时该值为null,我尝试检查数据表中的多个null类型,但它们仍默认为true。
还有另一种方法来检查可为空的值,以避免赋值导致数据表列/行中的错误。
public object emailGets ( AType invoiceNum,ILambdaContext context )
{
Connection conn = new Connection();
try
{
string query = "SELECT QUERY";
conn.getData(query);
DaTarow[] getData = conn.Dt.Select();
if(getData != null && getData.Count() > 0)
{
foreach (var item in getData)
{
string yourItem = item.Field<String>("email").ToString();
}
return new userData { email = yourItem};
}
else
{
return new userEmailAddress { email = null};
}
} catch ( Exception e )
{
throw e;
}
}
}
public class userEmailAddress
{
public string email { get; set; }
}
解决方法
当源为空时,
ToString()
将抛出NullReferenceException
。所以当你这样做
string yourItem = item.Field<String>("email").ToString();
并且item.Field<String>("email")
部分返回null,您将获得该异常。
幸运的是,该ToString()
调用是多余的,因此您只需删除它就可以了,
string yourItem = item.Field<String>("email");
请记住,yourItem
现在在此处可以为空。