在C#中的第三个数据表中获取特定格式的两个数据表数据

时间:2013-05-03 05:11:37

标签: asp.net sql c#-4.0 datatable

我有两个存储过程summary1和summary 2 并将存储过程数据放入c#

中的两个不同的数据表dt1和dt2中

我希望以特定格式获取第三个数据表dt3中的数据 喜欢

如果dt1表是 -

name |   m1 |   m2   |   m3   |
abc  |   12 |   4    |   8    |
dcd  |   1  |   5    |   7    | 

dt 2表数据为 -

name |   m1 |   m2   |   m3   |
abc  |   5  |   5    |   5    |
dcd  |   5  |   5    |   5    | 

两个数据表的列数相同,列名相同。

我希望以这种格式输出dt3

name |   m1     |   m2   |   m3   |
abc  |   12/5   |   4/5  |   8/5  |
dcd  |   1/5    |   5/5  |   7/5  |

并将数据表dt3数据绑定到gridview。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用Linq,

var dt3 = from p in dt1.AsEnumerable()
                   join q in dt2.AsEnumerable() on p.Field<string>("name") equals q.Field<string>("name") into UP
                   from q in UP.DefaultIfEmpty()
                   select new
                   {
                        name = p.Field<string>("name"),
                        m1 = p.Field<string>("m1") + "/" + q.Field<string>("m1"),
                        m2 = p.Field<string>("m2") + "/" + q.Field<string>("m2"),
                        m3 = p.Field<string>("m3") + "/" + q.Field<string>("m3")
                   };

答案 1 :(得分:0)

这是填充数据表dt3的SQL查询。 将table1和table2替换为实际的表名。

SELECT dt1.name,
       CAST(dt1.m1 AS VARCHAR) + '/' + CAST(dt2.m1 AS VARCHAR) as m1,
       CAST(dt1.m2 AS VARCHAR) + '/' + CAST(dt2.m2 AS VARCHAR) as m2,
       CAST(dt1.m3 AS VARCHAR) + '/' + CAST(dt2.m3 AS VARCHAR) as m3
FROM table1 dt1
INNER JOIN table2 dt2
ON t1.name=t2.name

你可以把它放在存储过程中说摘要3并制作gridview的数据源。

Grdview.DataSource=returnedDataset.Table[0];
Grdview.DataBind();