使用CSVHelper映射IEnumerable属性

mig*_*lla 8 c# csv ienumerable csvhelper

我有一类User,可以有几个联系号码.我正在使用CsvHelper生成用户报告,该报告将创建用户姓名和联系人详细信息的CSV文件.每个联系号码都应显示在自己的列中,联系号码的类型为列标题.

下面我有我的ContactNumberUser类,以及UserMap应该格式化我的CSV文件的类:

public class ContactNumber
{
    public string ContactType { get; set; }
    public string Number { get; set; }
}

public class User
{
    public string Name { get; set; }
    public IEnumerable<ContactNumber> ContactNumbers{ get; set;}
}

public sealed class UserMap : CsvClassMap<User>
{
    public UserMap()
    {
        Map(m => m.Name).Name("Username");
        // Incorrect Code
        Map(m => m.ContactNumbers).Name(c => c.ContactType);
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该如何映射ContactNumbers的IEnumerable属性以实现我想要的结果?

小智 5

它不是CsvHelper - read in multiple columns to a single list 的重复,因为这个问题询问如何从模型转换为 CSV,而不是相反。我通过创建一个中间模型解决了这个问题。因此,首先将原始模型(用户)转换为中间模型(联系人),然后映射该模型并创建 CSV。