如何使用 FileHelpers 库从 csv 中仅读取一定数量的字段?

sdd*_*dds 3 c# csv filehelpers

我手头有一个应用程序,它使用 FileHelpers 库来处理 csv 文件。

过去,输入的 csv 文件总是具有相同的结构,一个记录有 5 个逗号分隔的字段,然后是一个新行来分隔记录。

然而,最近我开始接收每行超过 5 条记录的 csv 文件,显然,当前用于 csv 解析的类不适用于这些行。问题是,我仍然只需要前五个字段,它们仍然以相同的顺序提供。

有没有办法用 FileHelpers 读取前五个字段,并忽略任何其他数据直到换行?

当前用于解析的类:

[IgnoreEmptyLines()]
[DelimitedRecord(";")]
public sealed class SemicolonsRow
{
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
    public String LastName;

    [FieldOptional()]
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
    public String Name;

    [FieldOptional()]
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
    public String MidName;

    [FieldOptional()]
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
    public String BirthDate;

    [FieldOptional()]
    [FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
    public String BirthPlace;
}
Run Code Online (Sandbox Code Playgroud)

小智 5

使用 FileHelper,您可以将此变量添加为最后一个:

public string[] FunkyNewField;
Run Code Online (Sandbox Code Playgroud)

如果您定义了 FieldOrder,则像这样添加它:

[FieldOrder(n)]
public string[] FunkyNewField;
Run Code Online (Sandbox Code Playgroud)

其中 n = 您最后指定的订单号之后的数字。

这将包含文件中您不想使用的所有额外列。