Как мога да копирам редове от един 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