在您的类中定义一个新的只读属性,如下所示:
[DelimitedRecord(",")]
public class SampleType
{
public string Field1;
public int Field2;
public IEnumerable<ChildClass> Collection { get; set; }
public string CollectionValues
{
get
{
string.Join("|", this.Collection.Select(c => c.Value));
}
}
}
我从未使用过 FileHelper,但我认为您应该能够导出包含 Field1、Field2 和 CollectionValues 的 CSV 文件。
更新:
查看 FileHelpers 的文档,似乎 FileHelpers 针对这种情况的解决方案是使用自定义 FieldConverter。您可以像这样定义自定义转换器:
public class MyCustomConverter : ConverterBase
{
public override object StringToField(string from)
{
return from.Split('|').Select(s => new ChildClass { Value = s });
}
public override string FieldToString(object fieldValue)
{
IEnumerable<ChildClass> collection = (IEnumerable<ChildClass>)fieldValue;
return string.Join("|", collection.Select(c => c.Value));
}
}
然后,您可以像这样在课堂上使用它:
[DelimitedRecord(",")]
public class SampleType
{
public string Field1;
public int Field2;
[FieldConverter(typeof(MyCustomConverter))]
public IEnumerable<ChildClass> Collection { get; set; }
}