C# 如何正确连接DataTable列的值?

C# 如何正确连接DataTable列的值?,c#,datatable,C#,Datatable,在下面的代码中,我注意到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+'!'

在下面的代码中,我注意到
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

将DataRow添加到DataTable中,即第一次计算时:

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

字符串运算符

要连接字符串,请使用+字符。价值 DataSet类的区分大小写属性确定是否为字符串 比较区分大小写。但是,您可以覆盖该值 使用DataTable类的区分大小写属性

请注意,上面的四行可以写成:

_dt.Rows.Add("A", "B");
结果当然是一样的。列
C
D
的值不包括在
对象[]
数组中,而是由列的表达式生成

现在它应该输出:

A
B
AB
A!B

非常聪明的回答。非常感谢。感谢您的进一步澄清
A
B
AB
A!B