如何使用FileHelpers注释或忽略txt文件中的一行

时间:2016-08-14 08:30:00

标签: c# filehelpers

IgnoreFirst(int)或IgnoreLast(int)仅忽略固定数量的行作为页眉或页脚。但我喜欢忽略或评论txt / csv文件中的特定行。例如,如下所示(忽略某些段落或txt / csv中的特定行):

############# This is a comment ##########
/* Some comment paragraph  
some more comments
last line of comment */
1,Foo,FooItem1
2,Foo,FooItem2
3,Goo,GooItem3
#4,Doo,DooItem4 <-- ignore. 
5,Eoo,EooItem5

我已经阅读了有关可能解决此问题的BeforeReadRecord和SkipThisRecord,但文档就像图像一样简单,没有解释也没有提供示例。

enter image description here

1 个答案:

答案 0 :(得分:6)

你必须使用这样的东西来注册事件处理程序:

unowned

然后在处理程序中,您可以检查特定条件以跳过记录:

FileHelperEngine engine = new FileHelperEngine(typeof(Orders)); 
// set the event here
engine.BeforeReadRecord += new BeforeReadRecordHandler(BeforeEvent); 

可能只是检查它是否以整数开头,如果不是则跳过。

编辑:你也可以在记录中使用INotifyRead接口,如下所示:

private void BeforeEvent(EngineBase engine, BeforeReadRecordEventArgs e)
{
    // skip any bad lines
    if (e.RecordLine.StartsWith("#") || e.RecordLine.StartsWith(" "))
        e.SkipThisRecord = true;
}