Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使FileHelper忽略定义列之后的列?(即忽略末尾的列)_C#_.net_Csv_Filehelpers - Fatal编程技术网

C# 如何使FileHelper忽略定义列之后的列?(即忽略末尾的列)

C# 如何使FileHelper忽略定义列之后的列?(即忽略末尾的列),c#,.net,csv,filehelpers,C#,.net,Csv,Filehelpers,假设我有以下FileHelpers记录定义: [DelimitedRecord(",")] [IgnoreEmptyLines] public class TestRecord { [FieldCaption("A")] [FieldQuoted(QuoteMode.OptionalForBoth)] public string A; [FieldCaption("B")] [FieldQuot

假设我有以下FileHelpers记录定义:

[DelimitedRecord(",")]
[IgnoreEmptyLines]
public class TestRecord
{
    [FieldCaption("A")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string A;

    [FieldCaption("B")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string B;

    [FieldCaption("C")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string C;
}
我只对A、B、C列感兴趣。它们后面的任何列都可以忽略。例如,我希望能够处理如下数据:

A,B,C,D,E
TestA1,TestB1,TestC1,TestD1,TestE1
TestA2,TestB1,TestC1,TestD1,TestE1
或:

或:


只需在类的末尾添加一个额外的
string[]
字段,并将其标记为
[FieldOptional]

[DelimitedRecord(",")]
[IgnoreEmptyLines]
public class TestRecord
{
    [FieldCaption("A")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string A;

    [FieldCaption("B")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string B;

    [FieldCaption("C")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string C;

    [FieldOptional]
    public string[] EverythingElse;
}

class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<TestRecord>();
        var records = engine.ReadString("TestA1,TestB1,TestC1,TestD1,TestE1");
        
        Debug.Assert(records.Count() == 1);
        Debug.Assert(records[0].A == "TestA1");
        Debug.Assert(records[0].B == "TestB1");
        Debug.Assert(records[0].C == "TestC1");

        Console.WriteLine("All OK");
        Console.ReadLine();
    }
}
[分隔符记录(“,”)]
[无知的人]
公共类测试记录
{
[现场字幕(“A”)]
[FieldQuoted(QuoteMode.OptionalForEarth)]
公共字符串A;
[现场字幕(“B”)]
[FieldQuoted(QuoteMode.OptionalForEarth)]
公共字符串B;
[字段标题(“C”)]
[FieldQuoted(QuoteMode.OptionalForEarth)]
公共字符串C;
[字段可选]
公共字符串[]其他所有内容;
}
班级计划
{
静态void Main(字符串[]参数)
{
var engine=new FileHelperEngine();
var records=engine.ReadString(“test1、TestB1、TestC1、TestD1、test1”);
Debug.Assert(records.Count()==1);
Assert(记录[0].A==“TestA1”);
Assert(记录[0].B==“TestB1”);
Assert(记录[0].C==“TestC1”);
Console.WriteLine(“一切正常”);
Console.ReadLine();
}
}
A,B,C
TestA1,TestB1,TestC1
TestA2,TestB1,TestC1
[DelimitedRecord(",")]
[IgnoreEmptyLines]
public class TestRecord
{
    [FieldCaption("A")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string A;

    [FieldCaption("B")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string B;

    [FieldCaption("C")]
    [FieldQuoted(QuoteMode.OptionalForBoth)]
    public string C;

    [FieldOptional]
    public string[] EverythingElse;
}

class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<TestRecord>();
        var records = engine.ReadString("TestA1,TestB1,TestC1,TestD1,TestE1");
        
        Debug.Assert(records.Count() == 1);
        Debug.Assert(records[0].A == "TestA1");
        Debug.Assert(records[0].B == "TestB1");
        Debug.Assert(records[0].C == "TestC1");

        Console.WriteLine("All OK");
        Console.ReadLine();
    }
}