【问题标题】:How to properly concatenate the values of Columns of a DataTable?如何正确连接 DataTable 的列的值?
【发布时间】:2020-05-14 00:38:02
【问题描述】:

在以下代码中,我注意到列 A 和 B 显示数据。
但是,C 和 D 列是空的。为什么?

DataTable _dt = new DataTable();
DataColumn A=_dt.Columns.Add("A");
DataColumn B=_dt.Columns.Add("B");
DataColumn C=_dt.Columns.Add("C",typeof(String),"A+B");
DataColumn D=_dt.Columns.Add("D",typeof(String),"A+'!'+B");

DataRow _dr=_dt.NewRow();
_dr["A"]="A";
_dr["B"]="B";

Console.WriteLine(_dr["A"]);
Console.WriteLine(_dr["B"]);
Console.WriteLine(_dr["C"]); //Shows blank-why? Expected AB
Console.WriteLine(_dr["D"]); //Shows blank-why? Expected A!B

【问题讨论】:

    标签: c# datatable


    【解决方案1】:

    将 DataRow 添加到 DataTable 中,这是首次评估 Expression 的时间:

    这些是计算列。当 + 符号与数据类型 String 的列一起使用时,这些值将被连接。

    字符串运算符

    To 连接一个字符串,使用 + 字符。的价值 DataSet 类的 CaseSensitive 属性决定字符串是否 比较区分大小写。但是,您可以覆盖该值 使用 DataTable 类的 CaseSensitive 属性。

    DataRow _dr=_dt.NewRow();
    _dr["A"]="A";
    _dr["B"]="B";
    _dt.Rows.Add(_dr);
    

    作为说明,上面的四行可以写成:

    _dt.Rows.Add("A", "B");
    

    结果当然是一样的。列C 和D 的值不包含在object[] 数组中,而是由列的表达式生成。

    现在应该输出:

    A
    B
    AB
    A!B
    

    【讨论】:

    • 非常聪明的答案。非常感谢。
    • 感谢您的补充说明
    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2015-05-11
    相关资源
    最近更新 更多