Jak mogę skopiować wiersze z jednej tabeli DataTable do innej? Za pomocą DataTable.Copy()
nie jest opcją, ponieważ tworzy Nową DataTable i usuwa wszystkie istniejące DaneRows. Co próbuję zrobić, to dodać wiersze w List<DataTable>
do innej tabeli. Czy jest dostępna jakaś metoda, która jest w stanie to zrobić? Lub iteruje przez wszystkie tabele i wiersze oraz wywoływanie DataTable.ImportRow()
moja jedyna opcja?
[AKTUALIZACJA] Ok, jest to pełny scenariusz. Mam DataTable z 2 milionami + rekordów. Ładowanie go rzuca System.OutOfMemoryException
. Zdecydowałem więc, że muszę załadować stronę / wsad. Tworzę tabelę docelową za pomocą DataAdapter.FillSchema()
w celu ładowania tylko kolumn. Potem uzyskuję "pełne rekordy" DataAdapter.Fill()
(inny DataTable), a następnie podziel go na List<DataTable>
. Podczas używania DataTable.Merge
, ten wyjątek jest zgłaszany: "Nie można włączyć ograniczeń. Jeden lub więcej wierszy zawiera wartości naruszające ograniczenia inne niż puste, unikalne lub obce klucze."
Odpowiedzi:
1 dla odpowiedzi № 1Próbowałem scalić, jak powiedział Michael z następującym kodem i działającym dla mnie.
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