.Net的DataTable的列可以是计算列,可以在列属性Expression中设置表达式,这样可以获得其它列相关的计算结果。比如:
var dt = new DataTable();
dt.Columns.Add("Para1", typeof(Int32));
dt.Columns.Add("Para2", typeof(Int32));
var column=dt.Columns.Add("Para3");
column.Expression = "Para1+Para2";
var row = dt.NewRow();
row["Para1"] = "1";
row["Para2"] = 2;
dt.Rows.Add(row);
var res1 = row["Para3"];
Console.WriteLine(res1);
Console.WriteLine(res1.GetType().FullName);
所得的结果是 3。
这里需要注意的是计算列的数据类型和参与计算列的数据类型。
- 参与计算列的数据类型很重要,比如上面的代码中,如果将Para1的类型改为String,所得到的结果是12而不是3,因为这两个变量作为字符串相加。
- 在赋值时,可以使用字符串,比如 row["Para1"] = "1"; 仍然作为数字1。
- 计算结果列的数据类型可以是字符型,不影响计算结果。
- 日期时间可以用##格式表示,比如 row["Para1"] = "#2021/5/5#";
- 布尔类型接收的值为True或者False,大小写无关,TRue和true都可以,除此之外都不可以。
网友评论