我有很多数据需要插入到SQL表中,并且我想使用SqlBulkCopy。我有数百万行需要添加到DataTable中,并且似乎是瓶颈,因为我发现添加行的唯一方法是使用wordArray = [["a", "b", "c"],["d", "e", "f"]];
,这是我编写的代码的示例到目前为止:
DataTable.Rows.Add(DataRow);
该代码可以非常迅速地打印出var table = new DataTable("MyTableName");
table.Columns.Add("Id");
table.Columns.Add("SomeOtherColumn");
IEnumerable<MyObject> myData; // this is a method parameter which has millions of values
var rows = myData.Select(data =>
{
return data.SomeInnerEnumerable.Select(e =>
{
var row = table.NewRow();
row["Id"] = e.Id;
row["SomeOtherColumn"] = e.SomeOtherColumn;
return row;
});
}).SelectMany(r => r); // flattens IEnumerable<IEnumerable<DataRow>> into IEnumerable<DataRow>
Console.WriteLine("DataRows created");
foreach (var row in rows)
{
table.Rows.Add(row);
}
,但是在循环上挂了25分钟以上。有没有更有效的方法将这么多行添加到DataTable中?