对于Datatable,我有个疑问,麻烦大家帮忙分析一下。有两个小问题,具体如下:
我自定义了一个Datatable类型——TradeDataTable,这个是通过xsd与后台数据库相互关联的。然后我在使用的时候,自己又对这种类型的对象tradeTable用代码形式添加了一个新列,然后TradeDataTable newTable=tradeTable.Clone();这句话居然就会报错,提示类型不匹配;奇怪的是DataTable a newTable=tradeTable.Clone()居然是对的。对于一个DataTable类型变量,添加列是不会改变其类型的,因为Debug.WriteLine(tempTable.GetType())输出的依然是TradeDataTable。但是TradeDataTable newTable=tradeTable.Clone();为什么会报错呢?
而且
IgnoreTradesTable = new TradeDataTable();
Debug.WriteLine(IgnoreTradesTable.Columns.Count);
DataColumn newCol = new DataColumn();
newCol.DataType = typeof(int);
newCol.ColumnName = "specialColumn";
tempTradesTable.Columns.Add(newCol);//这里在执行时候提示错误,说specialColumn已经存在。纳闷的是这列根本没有,根据输出的列数判断的,它铁定没有这一列,但错误提示说它已有这一列了。为什么
------解决思路----------------------
一般来说要先判断
if(tempTradesTable.Columns["specialColumn"]==null){
DataColumn newCol = new DataColumn();
newCol.DataType = typeof(int);
newCol.ColumnName = "specialColumn";
tempTradesTable.Columns.Add(newCol);
}
------解决思路----------------------
先判断tempTradesTable.Columns.Contans("specialColumn"),再add
tradeTable.Clone();方法你是否重写过?
如果调用的父类的方法,它输出的是DataTable类型