Есть ли способ массового добавления строк в DataTable? - PullRequest
1 голос
/ 08 мая 2019

У меня много данных, которые нужно вставить в таблицу SQL, и я хотел бы использовать SqlBulkCopy.У меня есть миллионы строк, которые нужно добавить в DataTable, и мне кажется, что у меня нет узких мест, потому что единственный способ добавить строки - это использовать DataTable.Rows.Add(DataRow); Это пример кода, который я получилfar:

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);
}

Код печатает "DataRows created" очень быстро, но зависает в цикле на 25+ минут.Есть ли более эффективный способ добавления такого количества строк в DataTable?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...