无法将 CSV 转换为 Poco

Can't convert CSV to Poco

我正在尝试读取从上传表单发送的 CSV 文件并将其转换为我的 Poco。 这是我的测试文件:

"30247685204","PWITA1","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI1","INTER MEMBER1",
"30247685205","PWITA2","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI2","INTER MEMBER2"

这是我的 Poco:

public class MyOrder
{
    public string TrackingID { get; set; }
    public string CarrierName { get; set; }
    public string ConNo { get; set; }
    public string import_id { get; set; }
    public string EnteredDate { get; set; }
    public string CustomerRef { get; set; }
    public string ConDescription { get; set; }
    public string TransferAcCode { get; set; }
    public string AccountNo { get; set; }
    public string AccountName { get; set; }
}

以下是我在服务中获取文件内容的方式:

foreach (var uf in Request.Files.Where(f => f.ContentLength > 0))
{
    var content = new StreamReader(uf.InputStream).ReadToEnd();
    var orders = content.FromCsv<List<MyOrder>>();
}

如果我在 var content 上中断,我可以看到我得到的文件内容是这样的:

"\"30247685204\",\"PWITA1\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI1\",\"INTER MEMBER1\",\r\n\"30247685205\",\"PWITA2\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI2\",\"INTER MEMBER2\"\r\n"

问题是我无法在 var orders 中获得正确的 Poco 订单列表。 我只得到一个元素(在文件中我有两个)而且它是空的...所有属性都设置为 null! 我总是处理 JSON 对象,过去我没有遇到过问题,这是我第一次尝试读取 CSV 文件,我不明白我哪里错了!

您可以指定不将 CSV 的第一行视为 headers:

CsvConfig<MyOrder>.OmitHeaders = true;

最好在您的 AppHost 中设置一次静态配置 Configure(),然后您可以反序列化它:

var orders = CsvSerializer.DeserializeFromStream<List<MyOrder>>(uf.InputStream);