使用可选列号从数据表中创build对象列表
我有一个MVC的Web应用程序,允许用户上传Excel文件。 excel文件具有以下列计数
- 文件1 => 10列(8个必需和2个可选)
- 文件2 => 8列(6个必需和2个可选)
- 文件3 => 6列(5个必填项和1个可选项)
- 文件4 => 4列(4个必选和0个可选)
我得到了一个DataTable
已经填充的列名基于上传的Excel文件。 我已经提前创build了一个有10个属性的class
:
public class ImportData { public string OpertorName { get; set; } public string MachineName { get; set; } .... }
现在我想实现的是从DataTable
创build一个List<ImportData>
。 我知道我可以做到以下几点
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();
上述工作正常的File 1
但我怎么可以容纳其余的文件,因为它们不会全部在DataTable
所有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();