【问题标题】:To get Two data table data in particular format in third data table in C#在 C# 中的第三个数据表中以特定格式获取两个数据表数据
【发布时间】:2013-04-27 10:46:33
【问题描述】:

我有两个存储过程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。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    这是用于填充数据表 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
    

    你可以把它放在存储过程中,比如summary 3,并制作gridview的数据源。

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

    【讨论】:

    • 谢谢,我会努力实现的。
    • 我没有任何表,只有数据表,数据可以从 C# 中的存储过程中获取
    【解决方案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")
                       };
    

    【讨论】:

    • sen Jacob 在这里我不想划分值我只想在两个值中添加“/”符号,例如“2/3”
    • 感谢它为我工作,但一个问题是只显示运算符符号而不是除值
    • 请检查我的答案,就像m1 = p.Field&lt;int&gt;("m1") + "/" + q.Field&lt;int&gt;("m1")
    • m 也尝试这种语法,但是在类型转换 int 到 string 时出现问题
    • 您可以将 m1、m2 和 m3 作为字符串本身。我已经编辑了我的帖子。像这样试试。 m1 = p.Field&lt;string&gt;("m1") + "/" + q.Field&lt;string&gt;("m1")
    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2016-03-12
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多