我们如何将空值分配给 LINQ 中的 int 列。例如。
SQLDBDataContext sqlD = new SQLDBDataContext();
var result = from p in sqlD.loadsRadius(Convert.ToInt32(Request["radius"]), .....
此处如果 Request["radius"] 为 null 则给出错误。
我可以通过这个传递 0,但我需要更改许多已经存在的程序。
提前致谢。
阿尼尔
您需要将 int 设置为 null,例如:
var result = from p in sqlD.loadsRadius(string.IsNullOrEmpty(Request["radius"]) ? (int?)null : int.Parse(Request["radius"]);
如果异常是 FormatException,我的猜测是 Request["radius"] 返回的值实际上是字符串“null”。如果 Request["radius"] 实际上返回 null,则 Convert.ToInt32() 将返回零。您可以尝试使用 int.TryParse() 来避免异常。
正如 Codechef 所建议的那样。
int radius = -1;
int.TryParse(Request["radius"],out radius)
if(radius > 0) // you can remove this clause if you don't want this
{
SQLDBDataContext sqlD = new SQLDBDataContext();
var result = from p in sqlD.loadsRadius(radius)
}
查看可空类型:这里。