嗨,是否可以编写一个包含集合的集合,例如父记录和子记录?
--> Parent1, Name, Age
-->--> Child1, Field1, Field2
-->--> Child2, Field1, Field2
--> Parent2, Name, Age
-->--> Child3, Field1, Field2
...
我认为 AutoMapper 可能会通过它的递归来做到这一点,但是当我使用WriteRecords(items)
尝试它时,只有父记录被写入。
谢谢
据我所知,您不能拥有嵌套集合。 但是,您可以拥有嵌套对象。 请参阅 AutoMapping 部分下方的参考地图 @ http://joshclose.github.io/CsvHelper/
3.0 版支持可枚举属性。
您能否提供为每个嵌套对象添加行的示例? (我可以使用 3.0 版,但如何使用?)
void Main()
{
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader))
{
writer.WriteLine("Id,Name,A,B,C");
writer.WriteLine("1,one,a,b,c");
writer.WriteLine("2,two,d,e,c");
writer.Flush();
stream.Position = 0;
csv.Configuration.RegisterClassMap<TestMap>();
csv.GetRecords<Test>().ToList().Dump();
}
}
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public List<string> ExtraStrings { get; set; }
}
public sealed class TestMap : CsvClassMap<Test>
{
public TestMap()
{
Map( m => m.Id );
Map( m => m.Name );
Map( m => m.ExtraStrings ).Index( 2 );
}
}
如果您愿意,还可以查看单元测试。 https://github.com/JoshClose/CsvHelper/tree/master/src/CsvHelper.Tests/TypeConversion