/ / Как да копирате редове от DataTable в друг DataTable без да изтривате съществуващи редове? - c #, .net, datatable, ado.net

Как да копирате редове от DataTable в друг DataTable, без да изтривате съществуващи редове? - c #, .net, datatable, ado.net

Как мога да копирам редове от един DataTable в друг? Използвайки DataTable.Copy() не е опция, тъй като това създава NEW DataTable и изтрива всички съществуващи DataRows. Това, което се опитвам да направя, е да добавям редове в a List<DataTable> на друга маса. Има ли някакъв метод, който е в състояние да направи това? Или иртирира през всички таблици и редове и призовава DataTable.ImportRow() единствената ми възможност?

[UPDATE] Добре, това е пълният сценарий. Имам DataTable с 2 милиона + записи. Зареждането му хвърля System.OutOfMemoryException, Така че, реших, че трябва да се зарежда / партида го зарежда. Създавам таблицата за местоназначение DataAdapter.FillSchema() с цел зареждане само на колоните. След това използвам "пълните записи" DataAdapter.Fill() (друг DataTable), след което го разделете на a List<DataTable>, При използване DataTable.Merge, това изключение се изхвърля: "Неуспех при активирането на ограниченията. Един или повече редове съдържат стойности, които нарушават ограниченията, които не са нищожни, уникални или чужди ключове."

Отговори:

1 за отговор № 1

Опитах да се слеят, както каза Майкъл със следния код и работата му за мен.

DataTable table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("Address");

table.Rows.Add("Shan", "ADC Street");

DataTable table2 = new DataTable();
table2.Columns.Add("Name");
table2.Columns.Add("Address");
table2.Rows.Add("Raj", "EFG Street");

table2.Merge(table,true);

Console.WriteLine(table2.Rows.Count);      //2
Console.WriteLine(table2.Rows[0]["Name"]); //Raj
Console.WriteLine(table2.Rows[1]["Name"]); //Shan