我有一个数据表,其中包含以下格式的数据: 让我们将此数据表命名为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的coulmnwise),以便我可以比较dt1和dt2的值并将它们添加到dt3。请注意,dt1和dt2中的数据项不固定,因为dt1包含数据库中的数据,dt2已检查表单中的值。最后,dt3的行数应该等于dt2的行数(或)可以将新列添加到dt2而不是创建dt3(仍然保持相同的行数)。
答案 0 :(得分: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;
}
}
}
}