c# - 如何正确处理 LinqToSql 类的 System.Nullable<T> 字段?

标签 c# .net nullable

我有一个包含一些可为空的双字段的表。使用 LinqToSQL 尝试直接使用该字段我得到

Argument type System.Nullable is not assignable to parameter type double

我该如何正确处理这个问题?

最佳答案

问题与Linq无关。这与 double 之间的转换有关和 double?/Nullable<double> .

double? 隐式转换至 double不允许:

double? foo ;
double  bar = foo ;
  • 可以直接引用double值:

      double? foo ;
      double  bar = foo.Value ;
    

    这将抛出 NullReferenceException如果Nullable<T>为空(即 .HasValue 为假)。

  • 你可以施放它:

      double? foo ;
      double  bar = (double) foo ;
    

    同样,如果 Nullabl<T> 会出现异常为空。

  • 如果 Nullable<T> 可以使用 null 合并运算符分配默认值为空:

      double? foo ;
      double  bar = foo ?? -1.0 ;
    

    自然,这避免了 NullReferenceException` 问题。

  • 您可以像使用空合并运算符一样使用三元运算符:

      double? foo ;
      double  bar = ( foo.HasValue ? foo.Value : -2 ) ;
    
  • 最后,您可以使用常规条件逻辑来遵循替代路径:

      double? foo ;
      double  bar ;
    
      if ( foo.HasValue )
      {
        doSomething(foo.Value) ;
      }
      else
      {
        doSomething() ;
      }
    

那些是关于选项的。哪个是正确的?我不知道。这取决于您的上下文。

关于c# - 如何正确处理 LinqToSql 类的 System.Nullable<T> 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233117/

相关文章:

.net - 控制台 ReadKey 异步还是回调?

entity-framework - 是否可以选择使 Entity Framework 将空字符串恢复为 null?

c# - 如何查看在不同计算机上创建的 Visual Studio VSP 文件?

c# - 将类/实例函数作为函数中的参数传递

c# - MVC4 View 未绑定(bind)到 POST Controller 中的模型

.net - 用于托管 WCF 集成服务的 Azure Web 应用程序或云服务

.net - 如何从 VB.Net 中的字典(字符串,对象)中重铸对象

c# - 我的服务器程序接收到的字节不完整。为什么?我正在使用 C# .net 套接字

c# - 使用 XmlSerializer 时如何排除空属性

c# - 适用于 .NET 的 Python 中的可空类型 (C#)