我的 .net 6 代码出现错误
myModel
public virtual TblTestCategory TestCategory { get; set; } = null!;
TestCategoryModel
public string? TestKit { get; set; }
但是当我调用控制器时出现错误
if (searchValue.ToLower() == "complete")
{
data = data.Where(
x => (x.ExpiredDatetime > DateTime.Now &&
(
x.TblParticipantAnswers.Count(answer => answer.Status == true) <
x.TestCategory.TestKit.Split(',').Length))
);
}
这里是错误提示
CS8602:尊重可能为空的引用
CS0854:表达式树可能不包含以下调用或调用 使用可选参数
我必须做什么?
您收到的错误“CS8602”表示取消引用可能为空的引用。当您尝试在代码中调用 .Split(',') 时,TestKit 可能为 null。使用之前需要检查 TestKit 是否不为 null。您可以使用空条件运算符 ? 来完成此操作。仅当接收者不为空时才安全地访问成员和元素。
当
Split
方法具有可选参数,并且您在表达式树中使用它时,会出现错误“CS0854”。表达式树不支持具有可选参数的方法。
您可以尝试以下代码来解决它:
if (searchValue.ToLower() == "complete")
{
data = data.Where(
x => (x.ExpiredDatetime > DateTime.Now &&
(
x.TblParticipantAnswers.Count(answer => answer.Status == true) <
(x.TestCategory.TestKit?.Split(new char[] { ',' }, StringSplitOptions.None).Length ?? 0)
))
);
}