>我有一个MVC Web应用程序,允许用户上传Excel文件。Excel 文件具有以下列计数
- 文件 1 => 10 列(8 列必填列和 2 列可选列(
- 文件 2 => 8 列(6 列必需,2 列可选(
- 文件 3 => 6 列(5 列必填列和 1 列可选列(
- 文件 4 => 4 列(4 列必填,0 列可选(
我收到一个DataTable
,该已根据上传的 excel 文件填充了列名称。我继续创建了一个具有 10 个属性的class
:
public class ImportData
{
public string OpertorName { get; set; }
public string MachineName { get; set; }
....
}
现在我要实现的是创建一个List<ImportData>
从DataTable
.我知道我可以做到以下几点
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();