2013-04-23 111 views
3

我有一個數據表,其包含以下格式的數據: 讓我們命名此數據表爲DT1循環的DataTable縱列

ColumnA  ColumnB  ColumnC 
------------------------------------- 
President  Manager  President 
          Manager 

在上面的數據表中的數據提供了選擇的權力選擇的目的爲在web窗體上的清單。當在清單中的項目進行檢查,並點擊一個按鈕時,我插入檢查的項目到另一個數據表,如下圖所示: 讓我們命名這個數據表作爲DT2

---------- 
    Manager 
    President 
    Manager 

現在我需要從列名DT1(第一數據表),其中在DT2 occurs.For示例的dataitems,在這種情況下我的要求輸出到另一個數據表(比如說DT3)。將

-------- 
ColumnB 
ColumnC 
ColumnC 

在該數據表(DT3)「ColummB」被包括作爲dt2(包含覈對清單中的檢查文本)具有數據項'Manager',其出現在dt1中的'ColumnB'下; 'ColumnC'出現兩次,因爲dt2包含'President'和'Manager',它出現在dt1的'ColumnC'下。

我需要一個有效的循環(最好coulmnwise爲dt1),以便我可以比較dt1和dt2的值並將它們添加到dt3。請注意,dt1和dt2中的數據項不是固定的,因爲dt1包含來自數據庫的數據,而dt2已從表單中檢查了值。最後,dt3的行數應該等於dt2的行數(或者)可以將新列添加到dt2,而不是創建dt3(仍保持相同的行數)。

+0

你有** **經理在** ColumnB **和** ** ColumnC你怎麼會來區分它們。 – 2013-04-23 04:13:32

+0

@ Shekhar ..我不必做出任何區別。讓我們假設dt1包含有權出席會議的當局。 分別將ColumnB和ColumnC重命名爲會議1和2。現在在這種情況下,'經理'必須參加會議1和會議2。 – 2013-04-23 04:17:06

+0

任何其他想法? – 2013-04-23 13:11:50

回答

1

一個想法可以通過數據表的每一行和一列循環。
然後通過第二個數據表值循環
如果值匹配選擇列名稱。

下面是公正的想法,你可以做什麼

DataTable dt1; 
DataTable dt2; 
DataTable dt3; 
string[] ar=new string.... 

foreach (DataRow dr in dt1.Rows) 
{ 
     foreach (DataColumn clm in dt1.Columns) 
     { 
      //loop through each value of the other table 
      foreach(DataRow drow in dt2.Rows) 
      { 
       string value = drow[0].ToString(); 
       if(value==clm) 
       { 
        //add the column name into a array 
        DataRow row = dt3.NewRow(); 
        row[0]=clm.ColumnName; 
        dt3.Rows.Add(row); 
        break; 
       } 
      } 
     } 
} 
+0

@ Shekhar ..您提供的代碼返回多個數據;即,循環的完成執行後考慮DT2是因爲它是,陣列「AR []」包含以下行 -------- ColumnB ColumnB ColumnC ColumnC ColumnC 該輸出不適合參考datatable dt3的問題..你可以提供一些編輯你的答案,這將返回數據在dt3 – 2013-04-23 04:58:35

+0

我已經更新了答案看看。 – 2013-04-23 05:29:38

+0

謝謝謝卡.... – 2013-04-26 13:31:16