我目前正在寻找一种方法来动态地将LINQ-Query的所有字段(不包括ID字段)插入到具有匹配列的DataTable的行中。最终目标是将DataTable的bulkInsert / SQLBulkCopy复制到数据库中。
var clearing = from line in ReadCSVFile(e.FullPath)
select new ClearingData
{
//About 200 fields are set here SNIP
};
//Create a DataTable for Bulk Inserting
DataTable dt = new DataTable();
//Insert the appropriate columns into the DataTable
foreach(var property in typeof(ClearingData).GetProperties().Where(x => x.Name != "CSVReportID"))
{
dt.Columns.Add(property.Name, Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType);
}
foreach(ClearingData clear in clearing)
{
//Something like dt.Rows.Add(all Elements in clear.Where(field != "ID"))
}
ClearingData是来自Entity Framework的映射类型,clearing是一个LINQ-Query,它导入200-meg .CSV并创建一个包含所有行和字段的匿名类型。大约有200个字段,这就是为什么我不想手工添加行。
提前感谢您的帮助!