3

我有一个数据表,其中包含以下格式的数据:让我们将此数据表命名为 dt1

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

上述数据表中的数据作为网络表单上的清单供选择以供选择权威。当检查清单中的项目并单击按钮时,我将选中的项目插入另一个数据表,如下所示: 我们将此数据表命名为 dt2

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

现在我需要从 dt2 中的数据项出现的 dt1(第一个数据表)获取列名。例如,在这种情况下,我需要的输出到另一个数据表(比如 dt3)将是

--------
ColumnB
ColumnC
ColumnC

在这个数据表(dt3)中,“colummB”被包括在内,因为 dt2(它包含清单中的检查文本)具有数据项“管理器”,它出现在 dt1 中的“列 B”下;'ColumnC' 出现两次,因为 dt2 包含出现在 dt1 中的 'ColumnC' 下的 'President' 和 'Manager'。

我需要一个有效的循环(对于 dt1 最好是 coulmnwise),以便我可以比较 dt1 和 dt2 的值并将它们添加到 dt3。请注意,dt1 和 dt2 中的数据项不是固定的,因为 dt1 包含来自数据库的数据,而 dt2 已检查表单中的值。最后,dt3 的行数应该等于 dt2 的行数(或者)可以将新列添加到 dt2 而不是创建 dt3(仍然保持相同的行数)。

4

1 回答 1

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;
               } 
          }
      }
 }
于 2013-04-23T04:18:12.153 回答