5

CSV ファイルを読み込もうとしています (区切り文字は「;」、引用符は「"」です)。

すべてを正常に作成できました (ウィザード ツールはすばらしい) が、解決策が見つからないことが 1 つあります。

基本的に、整数 (System.Int32) 列があります。理論的には、ほとんどのレコードはその列に正の整数値を持ちます。ただし、その列に「N/A」という値が表示されることがあります。私が達成したいのは、その列で「N/A」が発生したときに、FileHelpers にデフォルト値 (-1 で問題なく動作) を割り当てることです。

これが可能かどうか誰にもわかりますか?

PS: System.DateTime フィールドに対しても同じことを行う必要があるかもしれません (「N/A」がある場合もあります)。

4

2 に答える 2

5

思いつく最善の方法は、FieldConverterこれらのフィールドで属性を使用し、フィールドに必要な既定値を割り当てるカスタム コンバーター クラスを作成することです。

を継承するクラスを作成しConverterBase、2 つの仮想メソッドと の実装を提供するStringToField()必要がありFieldToString()ます。

このFieldToString()メソッドでは、文字列が "N/A" に等しいかどうかを確認します。そうである場合は、必要なデフォルト値を返します。

Int32を処理できるクラスとを処理できるクラスの 2 つの異なるクラスが必要になりDateTimeます。

FileHelpers のドキュメントには、これを行う方法の例があります。リンク

于 2010-01-05T15:52:26.323 に答える
5

ブランドンが言ったように、このコンバーターを使用する必要があります

// In your class
[FieldConverter(typeof(NoValueConverter))]
public int Number;

// Te Converter
public class NoValueConverter : ConverterBase
{
    public override object StringToField(string sourceString)
    {
       if (sourceString.Trim().ToUpper() == "N/A")
        return -1; // or int.MinValue;
       else
        return Integer.Parse(sourceString);
    }

    public override string FieldToString(object fieldValue)
    {
        return fieldValue.ToString();
    }

}

ウィザードを気に入っていただけてうれしいです :) (マッピング クラスの作成をより簡単にするために、クールな自動検出機能に取り組んでいます)

于 2010-01-05T16:27:24.500 に答える