http://www.codeproject.com/Questions/733071/Compare-Row-of-1st-Datatable-with-Column-of-2nd-Da (理解问题) 这些是我的两个数据库(视觉c#)
table1
|Par Name.........| Par #|.......Units |.......LSL | USL | -----SKIP |
Diffusion.........908513100.......-.......... 0 -----99.9 -----1
Program...........908514100.......-......... 99.5--- 999 -----
table2
starttime | Product | Device | Diffusion | Program |
11/7/2013 SAF5100EL 163 -0.145712003 -0.146583006
11/7/2013 SAF5100EL 84 -0.137499005 -0.137592003
11/7/2013 SAF5100EL 44 -0.142690003 -0.143250003
11/7/2013 SAF5100EL 164 -0.139434993 -0.140459001
11/7/2013 SAF5100EL 34 -0.147183999 -0.148519993
输出应该看起来像
table3
|Diffusion| | Program |
-0.145712003 -0.146583006
-0.137499005 -0.137592003
-0.142690003 -0.143250003
-0.139434993 -0.140459001
-0.147183999 -0.148519993
这里table2中与table1的行名称匹配的列(例如此处扩散和程序)必须从datatable2中获取,并且必须创建新的DataTable3并使用列的排序值(Diffusion和Program)
答案 0 :(得分:0)
正如其他人所说,这是直截了当的逻辑,你应该先自己尝试一下。这也会给你带来信心。
无论如何,以下代码应该可以解决问题。根据您的方便调整它。还要彻底测试它。
//dt1 contains Diffusion etc as rows
//dt2 contains diffusion etc as columns
//dt3 is the required table
DataTable dt3 = new DataTable();
DataRow dr = null;
for (int i = 0; i < dt1.Rows.Count; i++)
{
string col = dt1.Rows[i]["Par Name"].ToString();
if (dt2.Columns.Contains(col))
{
if (!dt3.Columns.Contains(col))
{
dt3.Columns.Add(col, typeof(string));
}
if (dt3.Rows.Count == 0)
{
for (int j = 0; j < dt2.Rows.Count; j++)
{
dr = dt3.NewRow();
dt3.Rows.Add(dr);
}
}
for (int j = 0; j < dt2.Rows.Count; j++)
{
dt3.Rows[j][col] = dt2.Rows[j][col].ToString();
}
}
}
希望这有帮助。