【问题标题】:how do I pass null to int column in linq如何将 null 传递给 linq 中的 int 列
【发布时间】:2010-09-26 05:45:36
【问题描述】:

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

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

这里如果 Request["radius"] 为 null 则会出错。

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

提前致谢。
Anil

【问题讨论】:

    标签: linq int nullable


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        按照 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)
        }
        

        【讨论】:

          【解决方案4】:

          查看可空类型:Here.

          【讨论】:

            【解决方案5】:

            你可以像这样使用?? operator

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

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

            【讨论】:

              猜你喜欢
              • 2011-06-12
              • 2020-06-16
              • 1970-01-01
              • 2020-11-19
              • 2021-06-01
              • 2013-07-13
              • 2018-05-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多