1

我有一个名为 TimeClockCode 的字符串属性。映射到 csv 文件的 index(0)。Index(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 的结果。

我是否遗漏了有关流畅映射实现的一些东西?前导零从何而来?

4

1 回答 1

0

我无法复制你的问题。我使用了这段代码:

static void Main(string[] args)
{
    var s = "\"11565\",\"a\",\"012\",\"4.5\",\"01\",\"555\"\r\n";
    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,或者您还有其他问题,这些问题在问题的文本中并不明显。

于 2016-04-07T20:04:07.867 回答