2017-05-19 7 views
0

私は、ユーザーがExcelファイルをアップロードできるMVC Webアプリケーションを持っています。 Excelファイルは、次の列カウント有するオプションの列番号を使用してデータテーブルからオブジェクトリストを作成する

  • ファイル1 => 10カラム(8必須および2オプション)
  • ファイル2 => 8列(必須6およびオプション2)
  • ファイル3 => 6つのカラム(5必須1オプション)
  • ファイル4 => 4列(必須4と0を任意)

Iは、Excelファイルに基づいて、列名が移入されたDataTableを通過し得ることをアップロードされました。私は先に行っとして10の特性を有するclassを作成しました:

public class ImportData 
{ 
    public string OpertorName { get; set; } 
    public string MachineName { get; set; } 
    .... 
} 

今、私が達成しようとしています何DataTableからList<ImportData>を作成することです。私は上記のFile 1のために正常に動作し、次の

List<ImportData> imports = dt.AsEnumerable().Select(row => 
new ImportData 
{ 
    OpertorName = row.Field<string>("OPERTOR NAME"), 
    MachineName = row.Field<string>("MACHINE NAME") 
    ... 
    //all 10 properties 
}).ToList(); 

行うことができます知っているが、私はあなたができるDataTable

答えて

2

内のすべての10個の列がありますそれらのすべてのファイルの残りのためではないかを収容することができます特定の列が存在するかどうかを確認してから、列の値をDataTableから取得するか、デフォルト値を設定します。このようなもの:

List<ImportData> imports = dt.AsEnumerable().Select(row => 
new ImportData 
{ 
    OpertorName = row.Field<string>("OPERTOR NAME"), 
    MachineName = row.Field<string>("MACHINE NAME"), 
    SomeOtherProperty = row.Table.Columns.Contains("column_name") ? 
     row.Field<string>("column_name") : 
     string.Empty //default value since column_name doesn't exist 
    //etc 
}).ToList(); 
+0

ありがとうございます! – Code

関連する問題