Csv-Helper Fluent类映射在映射到字符串属性时,将前导零添加到int字段



我有一个名为TimeClockCode的字符串属性。它被映射到csv文件的索引(0)。索引(0)包含诸如11565之类的整数。但是在映射到字符串TimeClockCode之后,

像这样:Map(p => p.TimeclockCode).Index(0);

或者像这样:Map(p => p.TimeclockCode).ConvertUsing(row => row.GetField<string>(0));

两者都产生字符串011565。

我通过将其读取为int并调用toString来解决这个问题。

Map(p => p.TimeclockCode).ConvertUsing(row => row.GetField<int>(0).ToString());这给了我11565的期望结果。

我是否遗漏了一些关于fluent映射实现的内容?领先的零从哪里来?

我无法复制您的问题。我用了这个代码:

static void Main(string[] args)
{
    var s = ""11565","a","012","4.5","01","555"rn";
    using (var sr = new StringReader(s))
    {
        var csv = new CsvReader(sr);
        csv.Configuration.HasHeaderRecord = false;
        csv.Configuration.RegisterClassMap<MyClassMap>();
        while (csv.Read())
        {
            var record = csv.GetRecord<MyClass>();
        }
    }
}
public class MyClass
{
    public string Test { get; set; }
    public string TimeclockCode { get; set; }
}
public sealed class MyClassMap : CsvClassMap<MyClass>
{
    public MyClassMap()
    {
        Map(p => p.TimeclockCode).Index(0);
        Map(p => p.Test).Index(2);
    }
}

我只能假设CSV中的值是011565,或者你有其他问题,从问题的文本中看不出来。

最新更新