好的,我的描述有点啰嗦,但请耐心等待。
我有两个非常长的查询,我使用INNER JOIN在多个表上运行。这两个查询之间的唯一区别是它们为一个WHERE子句采用不同的输入值,它们来自两个单独的DropDownLists。这些查询的结果是相同的,除了time1 / time2列。
string query1 = "select Name = t1.name, time1=(SELECT hours FROM table3 WHERE street=list1.selectedvalue), t2.address from [table1] t1 INNER JOIN [table2] t2 ON t1.param = t2.param ORDER BY Name";
string query2 = "select Name = t1.name, time1=(SELECT hours FROM table3 WHERE street=list2.selectedvalue), t2.address from [table1] t1 INNER JOIN [table2] t2 ON t1.param = t2.param ORDER BY Name";
(请不要理会上面的查询语法,我已经执行了查询,它们都返回了预期的结果。)
我想将这两个表合并为一个数据集(或者可以用作gridview的数据源的任何其他结构)。 'name'列是唯一的,有些可能也是,我可以查看。我希望最终的表格列类似于
名称时间1时间2分析地址
目前,我正在使用数据表来收集两个查询的结果。我尝试使用Datatable.Merge方法,但实际上将行数加倍(类似于外连接的类型),尽管命名列相同(在columns.Add(new DataColumn ...)
感谢您的关注:)感谢您的投入。
Datatable dt1 = new datatable;
Datatable dt2 = new datatable;
dt1.Columns.Add(new DataColumn("name", typeof(string)));
dt1.Columns.Add(new DataColumn("time1", typeof(int)));
dt1.Columns.Add(new DataColumn("time2", typeof(int)));
dt1.Columns.Add(new DataColumn("analysis", typeof(string)));
dt1.Columns.Add(new DataColumn("address", typeof(string)));
SqlDataReader dr = cmd1.ExecuteReader();
while (dr.Read())
{
DataRow drow = new DataRow();
drow["name"] = dr["name"].ToString();
drow["time1"] = dr["time1"];
drow["address"] = dr["CurrentTime"].ToString();
dt1.Rows.Add(drow);
}
dr.Close();
dr = cmd2.ExecuteReader();
while (dr.Read())
{
DataRow drow = new DataRow();
drow["time2"] = dr["time1"];
drow["analysis"] = "I need javascript here";
dt2.Rows.Add(drow);
}
dr.Close();
dt1.Merge (dt2);
this.GridView1.DataSource = dt1;
this.GridView1.DataBind;
答案 0 :(得分:1)
答案可以在这里找到。通过一些调整,我得到它完全按我想要的那样做。 http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/f122d7f4-3b7d-4d93-bd0f-8bb57cd990a4/