gpt4 book ai didi

c# - 5__2 是 Net Core 中的 null 异常

转载 作者:行者123 更新时间:2023-12-04 07:33:23 24 4
gpt4 key购买 nike

我收到上述错误。我正在验证一个字段对另一个字段,基本上是在将数据输入到文本框中之后,检查它是否存在于另一个字段中。我已经设置了一个 if 条件来确保如果数据不存在,那么它会返回到同一页面进行另一次尝试,否则保存。但是错误<inp>5__2 was null.如果数据不存在,则返回。
下面是代码:

var inp = _ipacontext.Inpolicies.ToList().Where(x => x.PolicyNo == custView.Ppolicy).SingleOrDefault();
if (String.Equals(inp.PolicyNo, custView.Ppolicy))
{
custView.CID = Guid.NewGuid();
_context.Add(customerData);
await _context.SaveChangesAsync();

return RedirectToAction("Complete", "Home");
}

return Redirect("/Home/Create");
custview.policyNo是从表单输入的字段,而 inp.PolicyNo是正在验证的现有字段。

最佳答案

如果 _ipacontext 中没有元素满足您Where中的条件, SingleOrDefault将返回默认值(即,对于 reference type 像用户定义的类,为 null)。所以这一行:

var inp = _ipacontext.Inpolicies.ToList().Where(x => x.PolicyNo == custView.Ppolicy).SingleOrDefault();
... 可能会给你一个空值 inp多变的。在下一行你正在做 inp.PolicyNo ,即在可能为空的实例上调用 getter。
您可以使用 null-conditional安全访问您的属性(property):
if (String.Equals(inp?.PolicyNo, custView.Ppolicy)) //Note the ? after inp
这样,如果 inpnull , inp?.PolicyNo将返回空值,而您的 if将转换为: if(String.Equals(null, custView.Ppolicy)) ,这是错误的。
作为旁注, String.Equals可以简单地使用 == 替换.这样就不会让我想起我必须维护的遗留 Java 后端。
编辑。
我只是注意到你有效地进行了两次相同的比较。如果没有匹配的元素,您的 LINQ 将返回 null,因此您可以这样做:
    var inp = _ipacontext.Inpolicies.ToList().Where(x => x.PolicyNo == custView.Ppolicy).SingleOrDefault();
if (inp != null)
{
//Stuff
}
或者更清楚:
    if (_ipacontext.Inpolicies.Any(x => x.PolicyNo == custView.Ppolicy))
{
//Stuff
}

关于c# - <inp>5__2 是 Net Core 中的 null 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67854397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com