将嵌套对象的特定属性写入CSV

时间:2017-04-06 18:42:12

标签: c# csvhelper

我正在写一个基于一个对象的CSV文件,该对象嵌套了另一个对象。我只想写一个嵌套对象的特定属性,而不是所有属性。

在下面的示例中,我期望的结果是仅将用户对象的网络名称写入CSV文件,而不是网络名称和操作员ID。但是,如上所述,它将输出两者。我可以为这个场景编写一个自定义的定义映射,但我想知道我是否可以指出要使用的特定属性。

public sealed class InventoryDefinitionMap : CsvClassMap<InventoryItem>
{
    public InventoryDefinitionMap()
    {
        Map(m => m.inventoryId).Name("Inventory Id");
        Map(m => m.serialNumber).Name("Serial Number");
        References<UserDefinitionMap>(m => m.AssignedUser);
    }    
}

public sealed class UserDefinitionMap : CsvClassMap<User>
{
    public UserDefinitionMap()
    {
        Map(m => m.operatorId).Name("ID");
        Map(m => m.networkName).Name("Network Name");
    }
}

void WriteCSVFile(List<InventoryItem> Items)
    {
        using (TextWriter writer = File.CreateText(fileLoc))
        using(var Csv = new CsvWriter(writer))
        {
            Csv.Configuration.RegisterClassMap<InventoryItemDefinitionMap>();
            Csv.WriteHeader<InventoryItem>();

            foreach (Item I in Items)
            {
                Csv.WriteRecord(I);
            }
        }
    }

0 个答案:

没有答案