1
我刚刚开始玩Josh Close的CsvHelper组件。但是我还没有完全理解映射的概念。我有一类Order
,看起来像这样:如何使用CsvHelper将IList <T>写入csv文件?
public class Order
{
public int Id { get; set; }
public IList<Address> Addresses { get; set; }
}
其中Address
看起来是这样的:
public class Address
{
public string Name { get; set; }
public string City { get; set; }
}
现在,我想这些类写入csv文件。示例输出可能是这样的:
Order.Id;Order.Address.Name;Order.Address.City
1;"Bob Miller";"London"
我有两个映射类OrderMap
和AddressMap
:
public sealed class OrderMap : CsvClassMap<Order>
{
public OrderMap()
{
Map (m => m.Id);
Map (m => m.Addresses).Index (0);
}
}
public sealed class AddressMap : CsvClassMap<Address>
{
public AddressMap()
{
Map (m => m.Name);
Map (m => m.City);
}
}
但是,这将产生以下输出:
Id,Addresses
1,CsvHelperClassMappingTest.Address
所以,我是什么在这里失踪?
建议的解决方案有效。任何人都可以确认'CsvClassMap'和自动映射仅适用于阅读目的吗? –
我对于仅用于阅读的'CsvClassMap'显然是错误的。正如你可以看到在[这个测试文件(https://github.com/JoshClose/CsvHelper/blob/master/src/CsvHelper.Tests/CsvWriterMappingTests.cs),它们用于书写,但我不知道的使用规则。我仍然相信投射到平面物体更简单,更直接。 –