2012-03-15 55 views
0

首先DataTable的是DT如何要經過兩個表以共同的價值觀另一個表

var dt = new DataTable(); 
      dt.Columns.Add("ID"); 
      dt.Columns.Add("First Name"); 
    dt.Rows.Add(1,"name1"); 
    dt.Rows.Add(6,"name6"); 
    dt.Rows.Add(4,"name4"); 

第二個表在第三DataTable中DT3 DT2

var dt2 = new DataTable(); 
       dt2.Columns.Add("ID"); 
       dt2.Columns.Add("First Name"); 
       dt2.Columns.Add("Last Name"); 
       dt2.Columns.Add("Birthday"); 

     dt2.Rows.Add(1,"name1", "lastName1", 01.01.1991); 
     dt2.Rows.Add(2,"name2", "lastName2", 02.02.1992); 
     dt2.Rows.Add(3,"name3", "lastName3", 03.03.1993); 
     dt2.Rows.Add(4,"name4", "lastName4", 04.04.1994); 
     dt2.Rows.Add(5,"name5", "lastName5", 05.05.1995); 
     dt2.Rows.Add(6,"name6", "lastName6", 06.06.1996); 

,我想那些值,其中ID是相同

結果:

ID Name Birthdate 
1 name1 01.01.1991 
4 name4 04.04.1994 
6 name6 06.06.1996 

如何通過c#中的DataTable?

+1

你爲什麼沒有在SQL這樣做呢?你爲什麼要爲你的數據類型使用數據表? – Oded 2012-03-15 20:33:09

+1

如果你可以使用LINQ請看看這個例子。 http://stackoverflow.com/questions/665754/inner-join-of-datatables-in-c-sharp – Kaf 2012-03-15 20:36:27

回答

1

不幸的是,有沒有簡單的方法,據我所知,加入2個表,並獲得第三臺自動的,除非你願意寫一些代碼....

你可以先使用LINQ加入他們的行列:

var common = from c in dt.AsEnumerable() 
      join x in dt2.AsEnumerable() on c.Field<string>("ID") equals x.Field<string>("ID") 
      select new object[] { c["ID"],c["First Name"], x["Birthday"] }; 

現在你可以創建你想要的架構目標表:

DataTable dt3 = new DataTable(); 
dt3.Columns.Add("ID"); 
dt3.Columns.Add("Name"); 
dt3.Columns.Add("Birthdate"); 
foreach (var item in common) 
    dt3.LoadDataRow(item.ToArray(),true); 
-1

您可能正在尋找在表格之間添加關係。檢查這個link

我想你會需要DataTables在同一個DataSet中(你可以將DataTables添加到DataSet中)。

+1

這比回答的評論。 – RQDQ 2012-03-15 20:35:26

+0

@RQDQ您希望我發佈完整的解決方案嗎?你是一個有趣的傢伙! – Arun 2012-03-15 20:36:53

0

你將它們添加到一個實際的數據庫與定義的模式或只是想做到這一點的內存?如果是內存,我會將它們添加到DataSet中,然後可以使用它來過濾數據集中的條件,您可以定義它們之間的關係。

1

寫一個SQL QueryStored Procedure使得它加入兩個表像你所描繪的。現在在.Net中使用該查詢爲您的DataTable。你會得到你所需要的。

相關問題