如何在linq中将null传递给int列

时间:2008-12-10 13:09:25

标签: linq int nullable

我们如何在LINQ中为int列分配null值。 例如

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

如果Request [“radius”]为null则给出错误。

我可以通过此传递0,但我需要更改许多已有的程序。

提前致谢。
Anil

5 个答案:

答案 0 :(得分:4)

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

var result = from p in sqlD.loadsRadius(string.IsNullOrEmpty(Request["radius"]) ? (int?)null : int.Parse(Request["radius"]);

答案 1 :(得分:2)

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

答案 2 :(得分: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)
}

答案 3 :(得分:0)

查看可空类型:Here.

答案 4 :(得分:0)

您可以像这样使用?? operator

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

如果Request [“radius”]等于null,则返回“0”。