按列循环一个数据表

本文关键字:一个 数据表 循环 | 更新日期: 2023-09-27 18:10:29

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

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

上面数据表中的数据作为web表单上的检查表提供给选择权限的目的。当检查表中的项目被选中并发生按钮单击时,我将选中的项目插入到另一个数据表中,如下所示:我们将这个数据表命名为dt2

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

现在我需要从dt1(第一个数据表)中获得列名称,其中dt2中的数据项出现。例如,在这个场景中,我需要的输出到另一个数据表(比如dt3)将是

--------
ColumnB
ColumnC
ColumnC

在这个数据表中(dt3)'ColummB'包含在dt2(包含检查表中的选中文本)中,数据项'Manager'出现在dt1中的'ColumnB'下;'ColumnC'出现两次,因为dt2包含'President'和'Manager',后者出现在dt1的'ColumnC'下。

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

按列循环一个数据表

可以循环遍历数据表的每一行和每一列。
然后循环遍历第二个数据表值
如果值匹配,选择列名。

下面是你可以做的事情

 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;
               } 
          }
      }
 }