【问题标题】:How to set Sql DateTime to null from LINQ如何从 LINQ 将 Sql DateTime 设置为 null
【发布时间】:2011-04-16 08:34:10
【问题描述】:

我有两种情况需要将 Sql 中的 DateTime 字段设置为 null。我使用 C# 和 LINQ to SQL 类。我阅读了很多关于 stackoverflow 的问题,这些问题与我的问题相似,但我的问题仍然有些不同。

当我们插入新客户时。

对应代码:

 Customer customer = new Customer();
 customer.CustomerName = txt_name.Text;
 customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : //send null here;

customer.DOB 是 System.DateTime。

我尝试的是:

1)

 customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : SqlDateTime.Null;

但这不会成功,因为 SqlDateTime 无法转换为 System.DateTime。

2)

    DateTime? nullDateTime = new DateTime();
 customer.DOB = dtp_dob.Checked ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) : nullDateTime.Value
 

在这种情况下,构建成功,但会抛出 SqlDateTime 溢出异常。

那么如何传递空值

LINQ 数据类中 DOB 成员的属性

他们中的许多人建议将自动生成的值设置为 true,而不是插入任何值。没错,它适用于插入盒。

但现在假设,已经有一个客户条目,其中一些日期时间值设置为 DOB 字段。现在用户想要清除这个值(删除生日),那么在这种情况下,我必须使用 UpdateOn 传递一个空值来清除相应客户行中归档的日期时间。

提前非常感谢你:)

【问题讨论】:

  • 它可以为空,你不能把它设置为null吗?
  • Customer.DOB 应该是 DateTime? 而不是 DateTime 如果该列可以为空。

标签: c# linq linq-to-sql datetime null


【解决方案1】:

你应该可以使用:

Customer customer = new Customer();
customer.CustomerName = txt_name.Text;
customer.DOB = dtp_dob.Checked 
                  ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) 
                  : (DateTime?) null;

注意nullDateTime? 的演员表。目前的问题是编译器无法根据操作数计算出条件表达式的类型。

您第二次尝试的问题是您正在创建一个新的不可为空的 DateTime 值,即公元 0001 年 1 月 1 日。您可以将其更改为:

DateTime? nullDateTime = null;
customer.DOB = dtp_dob.Checked 
                  ? DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd")) 
                  : nullDateTime;

【讨论】:

    【解决方案2】:

    请尝试

    if(dtp_dob.Checked )
    {
       customer.DOB = DateTime.Parse(dtp_dob.Value.ToString("yyyy-MM-dd"));
    }
    else
    {
       cstomer.DOB =null;
    }
    

    由于 DOB 可以为空,因此此代码将为您提供所需的内容。顺便说一句,我找不到 nullDateTime.Value 之类的东西

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 2017-02-06
      • 1970-01-01
      相关资源
      最近更新 更多