【问题标题】:How can I convert a string into a char with a length of four in C#? [duplicate]如何在 C# 中将字符串转换为长度为 4 的字符? [复制]
【发布时间】:2020-08-26 19:08:39
【问题描述】:

我有一个包含 Char(4) 字段的旧 SQL 表。

我需要通过插入新行来测试此表,但该字段应包含文本。 (编辑)这是在 C# Visual Studio Core 中插入存储库。 例如

 repo.Insert(new MyTable() { MyChar = Convert.ToChar("Self")});

我得到了错误

System.FormatException: '字符串必须恰好是一个字符长。'

如何在 C# 中将字符串插入到具有 char(4) 字段的 SQL 表中?

【问题讨论】:

  • 为什么要转换成字符???数据库不带字符串吗? (只需检查长度并根据需要控制内容可能会填充..)
  • char(4) 表示该列具有 4 个字符的固定长度它仍然是字符串
  • 数据库可能会采用字符串,但使用实体框架核心的 c# 不会
  • 当你想出答案时,你应该用好的minimal reproducible example 把它变成真正的问题。现在没有任何意义。
  • @DmitryBychenko 我认为您需要.PadRight 调用.Substring 以避免ArgumentOutOfRangeException 如果字符串小于4 字符。虽然我相信 SQL 将允许更短的字符串并会自动填充结尾。

标签: c# type-conversion


【解决方案1】:

我认为问题出在实体模型上。我需要改变类型

        [Column("inscode", TypeName = "char(4)")]
        public char InsCode { get; set; }

        [Column("inscode", TypeName = "char(4)")]
        public string InsCode { get; set; }

所以数据库是 char(4) 但模型将其视为字符串。

【讨论】:

    【解决方案2】:

    您不需要转换为 char。插入字符串即可。

    SQL 中的 Char(x) 是一个固定长度的字符串。 .NET 中的字符是单个字符。

    【讨论】:

    • 添加:如果您在sql中将单个char输入到char(4)中,它将根据SQL规范添加空格。
    • 仅插入字符串会产生错误“无法将类型 'string' 转换为 'char'”
    • @pldiguanaman 是char 还是char[]
    • 该字段为表中长度为4的char。当我将鼠标悬停在该字段上时,它表明它是一个字符而不是一个字符 []
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2015-07-04
    • 2014-08-05
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多