1

我们如何将空值分配给 LINQ 中的 int 列。例如。

 SQLDBDataContext sqlD = new SQLDBDataContext();
 var result = from p in sqlD.loadsRadius(Convert.ToInt32(Request["radius"]), .....

此处如果 Request["radius"] 为 null 则给出错误。

我可以通过这个传递 0,但我需要更改许多已经存在的程序。

提前致谢。
阿尼尔

4

5 回答 5

4

您需要将 int 设置为 null,例如:

var result = from p in sqlD.loadsRadius(string.IsNullOrEmpty(Request["radius"]) ? (int?)null : int.Parse(Request["radius"]);
于 2008-12-12T05:34:42.413 回答
2

如果异常是 FormatException,我的猜测是 Request["radius"] 返回的值实际上是字符串“null”。如果 Request["radius"] 实际上返回 null,则 Convert.ToInt32() 将返回零。您可以尝试使用 int.TryParse() 来避免异常。

于 2008-12-10T13:58:23.647 回答
0

正如 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)
}
于 2008-12-10T14:09:18.757 回答
0

查看可空类型:这里。

于 2008-12-10T14:35:21.467 回答
0

你可以用??像这样的运算符

Convert.ToInt32(Request["radius"] ?? "0")

如果 Request["radius"] 等于 null,它将返回 "0"。

于 2008-12-12T05:34:14.787 回答