データマッピングを格納するテーブルがあります。そのための私のモデルは、この表の目的は、私はそれらのフィールドを持つオブジェクトを作成できるようにCSVファイルからのマッピングを格納することですので、フィールドマッピングを使用してDataTableから新しいオブジェクトを作成
public class MapperTable
{
public string EE_First_Name {get; set;}
public string EE_Last_Name {get; set;}
public string EE_MI {get; set;}
}
のように見えます。 だから、CSVでの最初の名前フィールドは、姓*それは私のテーブルにマッチし、その後、私は姓の*からの値を持つ新しいオブジェクトを作成し、EE_First_Name
イムにフィールド名を設定されているがある場合IDを介してマッピングを保存し、ユーザーがIdを選択すると、その特定のマッピングを使用してcsvからデータをマップします。
public MapperTableConvertCsvUsingMap(DataTable csv){
var namesFromColumnCsvMap = DataAccess.ExportCsvMaps.FindByExp(x => x.ConfigId == idINt).FirstOrDefault();
foreach(DataRow row in Csv.Rows)
{
var csvMapped = new MapperTable {
EE_First_Name = row[namesFromColumnCsvMap.EE_First_Name__.TrimEnd()].ToString(),
EE_Last_Name__ = row[namesFromColumnCsvMap.EE_Last_Name__.TrimEnd()].ToString(),
EE_MI = row[namesFromColumnCsvMap.EE_MI.TrimEnd()].ToString(),
};
}
すべての列が正しくマップされている場合に機能します。彼らが正確に一致しない場合、それは爆発する。新しいオブジェクトを作成するために、csvの列ヘッダーと私のテーブルに格納された列ヘッダー定義を照合するより良い方法は何でしょうか?
私はそれは、列マッピングはプロセスように、データベースに格納されますする必要があり、この
のように見える必要があり、この
のように見えるcsvファイルを持っています繰り返すことができる。受信したcsvは、示されているものと異なる場合がありますが、データベースに格納されている値を使用して最後のCSVにマップできる必要があります。
「着信CSVは、示されているCSVとは異なる可能性がありますが、マッピング可能である必要があります。あなたは最終結果を示しています.CSVのさまざまなフォーマットがどのように見えるのか?あなたは結果ではなく、データの摂取に集中する必要があります。合理的な回答を提供するのに十分な摂取情報はありません。 – OmegaMan
私が言っている意味は、「__First__Name」という名前の列が「EE FIrst Name *」にマッピングされているというデータベースにマッピングがある場合、csvが入力されたときに、csvからデータを読み取り、そのフィールドに割り当てます新しいオブジェクトで –