我的程序不断抛出InvalidOperationException,错误为“无法将null值赋给类型为System.Boolean且不可为空的值类型的成员”。我无法理解这一点,因为我的代码并没有尝试分配任何内容,只是遍历列表并生成所有声明数字的字符串(如果查询没有关联的声明,则返回空字符串):
public string ClaimNumbers
{
get
{
if (Enquiry.Claims != null && Enquiry.Claims.Count>0)
{
var sb = new StringBuilder();
foreach (var claim in Enquiry.Claims)
{
sb.Append(claim.ClaimId.ToString("00000") + ", ");
}
return sb.ToString().Substring(0, sb.Length - 2);
}
return string.Empty;
}
}
奇怪的是,当我逐步调试调试器中的代码并尝试扩展Enquiry.Claims.Count时,我看到:
然后当我暂停一下并走到下一行时,它变为:
我正在使用Linq to Sql,而Claims是一个实体集,所以我想知道是否可能与从数据库中提取数据有关,但是我不确定,所以想不出什么是最好的解决问题的方法是。
答案 0 :(得分:0)
我假设CLAIMS表有一列映射到Claims
实体中的布尔属性,该列包含至少一个NULL值。
答案 1 :(得分:0)
这很可能是因为你使用LINQ to SQL
或类似的东西,并且在那条确切的行上,结果集合为空,这将迫使LINQ
引擎用{{初始化返回值1}}。 因此它会引发异常。
要解决此问题,请尽可能查看将如何恢复集合的null
,并使用Count
符号声明nullable
类型。
希望这有帮助。