2016-10-28 11 views
3

最初のフィールドが0より小さい場合、2番目のフィールドにマップする方法はありますか?あなたが列foobarでcsvファイルをマッピングしている場合CsvHelperを使用して、最初の列の値が0の場合、2番目の列にマップする方法

たとえば、:

Map(m => m.Price).Name("foo"); 

と列fooが0と等しい場合

、我々は、代わりに bar列の値に Priceをマッピングすることができます。

答えて

3

以下のように手動で列を変換する必要があります。

Map(x => x.Price) 
    .Name("foo") 
    .ConvertUsing(row => 
    { 
     var fooValue = row.GetField<decimal>("foo"); 

     if (fooValue == 0m) 
     { 
      return row.GetField<decimal>("bar"); 
     } 
     return fooValue; 
    }); 

つまり、条件付きマッピングを行うにはCsvHelperを使用する必要はありません。理想的には、CSVモデルとマップする別のモデルのマッピングがあります。次に、CSVモデルを他のモデルにマップするコードを用意します。

+0

私の問題とアドバイスを解決していただきありがとうございます。これは、私のメインモデルに対応する別のCSVモデルを持つことに意味があります。 – Wellspring

関連する問題