FileHelpers可以从同一文件中提取不同的记录吗

时间:2018-08-22 18:07:24

标签: header ignore filehelpers

我有很多带有标题和结尾的文件。这些记录与文件的正文不同,例如:

(BOF)
Header    20180821         12345(CRLF)
A   12  BCAD   000012345          20160324     XYZ(CRLF)
B   10  BCXD   000012331          20160324     ABC(CRLF)
C   99  BCZZ   000010845          20160324     1AB(CRLF)
Trailer          003  00000(CRLF)
(EOF)

我知道FH可以“ IgnoreFirst”,“ IgnoreLast”,但是我的问题是它可以将这些标题/尾部提取或转换为与主体不同的另一个对象吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用MultiRecordEngine。文档为here

var engine = new MultiRecordEngine(
    typeof(HeaderObject),
    typeof(RecordObject),
    typeof(TrailerObject));

engine.RecordSelector = new RecordTypeSelector(CustomSelector);

然后定义一个CustomSelector

private Type CustomSelector(MultiRecordEngine engine, string recordLine)
{
    if (recordLine.Length == 0)
        return null;

    if (recordLine.StartsWith("Header")))
        return typeof(HeaderObject);
    else if (recordLine.StartsWith("Trailer")))
        return typeof(TrailerObject);
    // else
    return typeof(RecordObject);
}