我在过去三天遇到问题,无法在google和stackoverflow上找到解决方案。
我的模型中有一个可以为null的int属性。当我尝试使用dynamic where子句在该列上应用任何函数时,我面临一个错误 - “类型'Int32上的方法?'无法访问“。
假设我的模型结构是 -
public class MyTestModel
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
现在,我希望有一个从前端动态创建的搜索查询。例如 -
Where("Name.StartsWith(\"t\") and ParentId.ToString().StartsWith(\"1\") ");
我的解决方案已经迎合了所有其他类型,但可空类型在这里不起作用。我也尝试过检查null,但是不起作用。 (从其他论坛阅读):
Where("Name.StartsWith(\"t\") and (ParentId != null and ParentId.ToString().StartsWith(\"1\")) ");
Where("Name.StartsWith(\"t\") and (ParentId != null and ((int?)ParentId).ToString().StartsWith(\"1\")) ");
答案 0 :(得分:0)
试试ParentId.Value.ToString().StartsWith(\"1\")
。如果查询将在SQL服务器上执行,则不需要检查null
值,因为SQL中没有NULL异常。如果查询将“本地”执行(针对.NET集合),则必须检查null
值。