【问题标题】:How can I make nullable string and datetime value in C#如何在 C# 中创建可为空的字符串和日期时间值
【发布时间】:2020-06-17 16:36:23
【问题描述】:
ScdDept = fields[8] is DBNull? null:fields[8].ToString();
LeaveDate = fields[9] is DBNulL?DateTime.MaxValue:DateTime.Parse(fields[9].ToString());

如果我向 A 表添加一些值并且我运行我的应用程序相同的增值 B 表,我有 A 表和 B 表。但是在 A 表 LeaveDate 和 ScdDept 是空的,它看起来是“NULL”,但是 B 表如果 LeaveDate 是空的,它看起来是 maksvalue 并且 ScdDept 是空的它看起来是空的。 我该如何解决这个问题?

【问题讨论】:

  • DateTime?,大概
  • 什么是fields
  • 这个问题缺少一些上下文。 fields 是什么? ScdDeptLeaveDate 是什么?
  • 我已修复并提供更详细的信息。谢谢您的反馈
  • 不相关,但我强烈建议不要使用字符串来存储日期时间(或任何其他结构化数据)。其次,我建议不要使用普通的DateTime(使用DateTimeOffset),第三,由于数据来自数据库而不是用户,这意味着它们采用统一格式,这意味着您需要将CultureInfo.InvariantCulture 添加到您的Parse调用以保护代码免受系统区域设置的影响。

标签: c# string datetime parsing null


【解决方案1】:

你的问题不清楚。可能是maksvalue 你的问题是MaxValue

根据您的评论和问题更新,我认为不是 DateTime.MaxValue of LeaveDate 列你想要空值。

您的 LeaveDate 属性应如下所示

public DateTime? LeaveDate { get; set; }

然后你像这样实现。

ScdDept = fields[8] is DBNull ? null : fields[8].ToString();
LeaveDate = fields[9] is DBNull ?  (DateTime?)null : DateTime.Parse(fields[9].ToString());

【讨论】:

  • ScdDept 是一个字符串 LeaveDate 是 DateTime
  • 如果 ScdDept 是一个字符串,那么你的实现是正确的,因为字符串总是可以为空的。如果LeaveDate 是日期,那么如果字段[9] 中存在有效日期,则 DateTime.Parse 将起作用。你想要什么?
  • 我认为 OP 想要一个可空的 DateTime 用于 LeaveDate?
  • 我有一张两张桌子。如果我将一个人添加到 A 表,我的应用程序会运行并在 B 表中添加同一个人。在 A 表 SCD_DEPT 和 LeaveDate 中看起来“NULL”,但在 B 表中 SCD DEPT 看起来是空的。也离开日期看起来很有价值我想改变它。
  • 您想要两个表的值相同吗?你想要表 B LeaveDate Null 值吗?
【解决方案2】:

方法一: 如果数据未解析,这将设置默认值。它甚至返回解析是否完成。

  String.TryParse( fields[8],out ScdDept );
  DateTime.TryParse(field[9],out LeaveDate );

方法二: 在声明 ScdDept 时将其设为可空

private string? ScdDept ;
private DateTime? LeaveDate ;

【讨论】:

  • 在声明 ScdDept 时使其可以为空
  • 我的团队使用:public string ScdDept { get;放; } 公共日期时间 LeaveDate { 获取;放; }
  • 我尝试了 TryParse,但出现了错误。字符串不包含 tryparse 的定义,我也出现了错误。
  • 我也采用了属性或索引器可能不会作为 out of ref 参数传递
  • @OnurcanŞimşek,然后将其设为可空值。然后赋空值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
相关资源
最近更新 更多