2008-11-12 14 views
38

2 DataTable'ım varsa (dtOne ve dtTwo) ve bunları birleştirmek ve başka bir DataTable'a (dtAll) koymak istiyorum. Bunu C# 'da nasıl yapabilirim? Veritabanındaki Birleştir ifadesini denedim, ancak bu geçersiz olur. Birleştirme verileri koruyor mu? Örneğin, ben yaparsam:2 DataTable'ı birleştirin ve yeni bir tane depolayın

dtOne.Merge(dtTwo); 

mu dtOne değişiklik ya da dtTwo değişiklik yapar ve ya bir değişirse, değişiklikler korumak mı?

ben çünkü boşluk döner Birleştirme bunu yapamaz biliyorum ama dtAll içinde dtOne ve dtTwo hem Birleşmeyi depolamak mümkün istiyorum:

//Will Not work, How do I do this 
dtAll = dtOne.Merge(dtTwo); 

cevap

75

Merge yöntem değerleri alır ikinci tablo ve onları ilk tablo ile birleştirir, böylece ilk şimdi değerleri her ikisinden de tutacaktır.

orijinal tablolar hem korumak istiyorsanız, o zaman birleştirme, orijinal ilk kopya olabilir:

dtAll = dtOne.Copy(); 
dtAll.Merge(dtTwo); 
+1

için nihai sonucu bağlamak nedir:

Bu teknik iteratif veri tabloları birleştirmek istiyorum bir döngü içinde yararlıdır @ Knickerless-Noggins tarafından kodlanan: 'genel statik DataTable MergeTwoDataTables (DataTable tableA, DataTable tableB) {DataTable MethodResult = null; deneyin {DataTable TableA = tableA.Copy(); TableA.Merge (TABLEB); MethodResult = TableA; } catch // (Exception ex) {//ex.HandleException(); } return Yöntem Sonucu; } – Kiquenet

1
DataTable dtAll = new DataTable(); 
DataTable dt= new DataTable(); 
foreach (int id in lst) 
{ 
    dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable 
} 
dtAll = dt; 
+0

IMHO, yararlı bir yanıt değil. [Jeromy Irvine'in cevabı] 'dan aynı cevap (http://stackoverflow.com/a/285500/979621). Son olarak, *** Birleştirme *** kullanın. – Kiquenet

27

(Oldukça geç, ancak bu soru üzerine tökezleyerek biri yardımcı olabilir.) Jeromy Irvine's answer içinde

yerine dtAll = dtOne.Copy(); Yapabileceğiniz: vb

dtAll = new DataTable(); 
... 
dtAll.Merge(dtOne); 
dtAll.Merge(dtTwo); 
dtAll.Merge(dtThree); 
... 

ve.

DataTable dtAllCountries = new DataTable(); 

foreach(String strCountry in listCountries) 
{ 
    DataTable dtCountry = getData(strCountry); //Some function that returns a data table 
    dtAllCountries.Merge(dtCountry); 
} 
0

Bu şimdiye iki datatables birleştirilmesi için yaptığı ve GRIDVIEW

 DataTable dtTemp=new DataTable(); 
     for (int k = 0; k < GridView2.Rows.Count; k++) 
     { 
      string roomno = GridView2.Rows[k].Cells[1].Text; 
      DataTable dtx = GetRoomDetails(chk, roomno, out msg); 
      if (dtx.Rows.Count > 0) 
      { 
       dtTemp.Merge(dtx); 
       dtTemp.AcceptChanges(); 

      } 
     } 
+0

IMHO, kullanışlı bir cevap değil. [Jeromy Irvine'in cevabı] 'dan aynı cevap (http://stackoverflow.com/a/285500/979621). Son olarak, *** Birleştirme *** kullanın. – Kiquenet

İlgili konular