10

FileHelpers を使用して、このタイプの CSV ファイルを解析しようとしています。

Tom,1,2,3,4,5,6,7,8,9,10
Steve,1,2,3
Bob,1,2,3,4,5,6
Cthulhu,1,2,3,4,5
Greg,1,2,3,4,5,6,7,8,9,10,11,12,13,14

FileHelpers でこれを解析する方法がわかりません。私は次のようなことができるはずだと思います:

[DelimitedRecord(",")]
public class MyRecord
{
    public string Name;

    public List<int> Values;
}

しかし、それは FileHelpers では可能ではないようです。私ができる最善のことはこれです:

[DelimitedRecord(",")]
public class MyRecord
{
    public string Name;

    public string Values;

    public string[] ActualValuesInNiceArray
    {
        get { return Values.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); }
    }
}

次にValues、各レコードの一連の値を取得するためにカンマで区切る必要があります。各レコードの一部を手動で解析する必要がある場合、FileHelpers を使用する意味はないようです。

何か不足していますか?docs/examples を調べましたが、自分のフォーマットの解決策が見つからないようです。Excel は私のフォーマットに問題がないので、既存の無料ライブラリ (FileHelpers またはその他のライブラリ) でそれを行う方法があると思います。何か案は?

4

2 に答える 2

13

配列フィールドを使用すると、ライブラリが作業を行います。

[DelimitedRecord(",")]
public class MyRecord
{
    public string Name;

    public int[] Values;
}

[FieldArrayLength(2, 8)] を使用することもできます

[DelimitedRecord(",")]
public class MyRecord
{
    public string Name;

    [FieldArrayLength(2, 8)]
    public int[] Values;
}

値の最小/最大数の設定

ここからライブラリの最新バージョンをダウンロードすることを強くお勧めします。

http://teamcity.codebetter.com/viewType.html?buildTypeId=bt65&tab=buildTypeStatusDiv

アーティファクト セクションを確認する

于 2010-03-01T16:07:24.607 に答える
1

MyRecordすべての潜在的な値を保持するクラスを作成できます。

[DelimitedRecord(",")]
public class MyRecord
{
    public string Name;
    public int Value1;
    .....
    [FieldOptional]
    public int Value5;
    ......
    [FieldOptional]
    [FieldNullValue(typeof(int), "-1" )]
    public int Value14;
}

これらのフィールドのほとんどをオプション (私の例では 5 から 14 まで) にし、それを a などと組み合わせて、FieldNullValue存在しないフィールドを処理します (または、オプションのフィールドを null 許容の int にします:

 public int? Value5
于 2010-03-01T14:30:31.457 に答える