CSVHelper中Format("0.0".PadRight(100, '#'))作用及属性替代方案咨询
关于ClassMap中TypeConverterOption.Format配置的含义及等价属性写法
格式含义确认
你对该配置的理解方向是对的,具体细节如下:
0.0部分确保:整数部分至少显示1位数字(哪怕数值是0也不会省略),小数部分必须至少显示1位- 通过
PadRight(100, '#')补充的97个#,表示小数部分最多可额外显示97位有效数字,加上前面的1位,总共最多支持98位小数(原格式串总长度为100,减去"0.0"的3个字符,剩余97个#) - 另外,
#会自动忽略末尾的无效零,不会输出多余的尾部零
等价的属性写法
如果用属性替代ClassMap配置,直接在目标属性上添加[TypeConverterOptions]属性,传入完整的格式串即可。由于属性参数必须是常量,需要直接写出拼接后的格式:
public class YourClass { [TypeConverterOptions(Format = "0.0###################################################################################################")] public double? MyNullableDoubleProperty { get; set; } }
如果需要复用这个格式,可以先定义一个常量:
public static class FormatConstants { // "0.0" + 97个#,总长度100,和原PadRight效果完全一致 public const string NullableDoubleFormat = "0.0###################################################################################################"; } public class YourClass { [TypeConverterOptions(Format = FormatConstants.NullableDoubleFormat)] public double? MyNullableDoubleProperty { get; set; } }
内容的提问来源于stack exchange,提问作者causa prima
相关产品推荐
相关产品推荐

