我正在使用Filehelpers将类的集合导出到csv文件。
该类用于存储用户信息,有5个字段,我想在不同的情况下导出不同的字段。 因此集合将是所有新用户,其中我只有字段1,2,3的值或已删除的用户,其中只有字段1,4,5具有值。 我将这些字段声明为可选字段,但是当我调用write文件时,所有字段都包含在输出中。
有没有人知道最好的方法来做这件事,我有点难过。
[FieldOptional()]
[FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]
public String JobTitle;
[FieldOptional()]
[FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)]
public String Department;
答案 0 :(得分:1)
FieldOptional
属性仅在导入时用于表示导入文件中可能缺少某个字段。
从您的问题中不清楚在新用户的情况下是否需要您的字段4和字段5显示为空,例如,
Field1, Field2, Field3,,,
在这种情况下,您可以将Field4和Field5设置为null。
或许你想要完全省略它们,
Field1, Field2, Field3
在这种情况下,您可以使用AfterWriteEvent
。像
var engine = new FileHelperEngine<Person>();
engine.AfterWriteRecord += engine_AfterWriteRecord;
static void engine_AfterWriteRecord(EngineBase engine, AfterWriteEventArgs<Person> e)
{
// trim trailing empty separators
e.RecordLine = e.RecordLine.TrimEnd(',');
}
作为附加事件的替代方法,您可以让FileHelpers类实现INotifyWrite<T>
接口
[DelimitedRecord(",")]
class User : INotifyWrite<User>
{
public string Field1;
public string Field2;
public string Field3;
public string Field4;
public string Field5;
public void BeforeWrite(BeforeWriteEventArgs<User> e)
{
}
public void AfterWrite(AfterWriteEventArgs<User> e)
{
e.RecordLine = e.RecordLine.Trim(',');
}
}