2009-04-07 7 views
0

J'ai deux datatables définies comme ceci;Opération d'intersection DataTable

Dim db1, db2 As New DataTable

DB1 et db2 résultats de différentes requêtes détiennent, mais les colonnes dans les deux sont exactement les mêmes. Je voudrais créer un autre datatable qui se compose d'enregistrements qui sont à la fois dans db1 et db2. Je veux l'intersection des deux données. Y a-t-il un moyen facile de faire ceci?

(datatable résultante sera utilisée pour alimenter un gridview.)

Répondre

0

Si vous utilisez VB.NET with LINQ, vous pouvez le faire comme ceci:

Dim db3 = db1.Intersect(db2) 

De là, il suffit d'utiliser db3 pour remplir votre GridView.

2

Vous pouvez essayer de cette façon.

 // Declare Data Table and Data View 
     DataTable dt1 = new DataTable(); 
     DataTable dt2 = new DataTable(); 
     DataTable dt3 = new DataTable(); 
     DataTable dtTemp = new DataTable(); 
     DataView dv = new DataView(); 

     dt1.Columns.Add("Col1"); 
     dt1.Columns.Add("Col2"); 
     dt1.Columns.Add("Col3"); 

     dt2.Columns.Add("Col1"); 
     dt2.Columns.Add("Col2"); 
     dt2.Columns.Add("Col3"); 

     // Initialize Data Table and Data View 

     dt1.Rows.Add("A", "B", "C"); // Testing data for data table 1; actual data will come from your query 
     dt1.Rows.Add("E", "F", "G"); //         == 

     dt2.Rows.Add("A", "B", "C"); 
     dt2.Rows.Add("U", "V", "W");// Testing data for data table 2; actual data will come from your query 
     dt2.Rows.Add("X", "Y", "Z");//         == 


     // Merge Data Table into temporary Data Table 
     dtTemp = dt1; //Initialize dt1 value in to dtTemp 
     dtTemp.Merge(dt2);// Merge it with dt2 you will get the 

     // Use Data View to get disticnt values 
     dv = new DataView(dtTemp); 
     dt3 = dv.ToTable(true, "Col1", "Col2", "Col3");// Remember, it is for intersection not for union