定義一個新的只讀屬性在你的類是這樣的:
[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,但我認爲你應該能夠導出包含字段1,字段2,和CollectionValues一個CSV文件。
UPDATE:
望着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; }
}
你需要決定,並說明要如何子類中表示CSV文件。你想讓你的CSV文件像'Field1,Field2,Child1,Child2,...'嗎? – ataravati
請參閱更新。 –