问题描述
为了判断DataReader是否包含某一列,我这样写:DataColumnCollectiondcc=dr.GetSchemaTable().Columns;if(dcc.Contains("istop"))p.Istop=Convert.IsDBNull(dr["istop"])?0:Convert.ToInt32(dr["istop"]);
结果没判断出来,dcc.Contains()全部是false,怎么会这样?应该怎么办?
解决方案
解决方案二:
看看http://bbs.csdn.net/topics/360110051
解决方案三:
可以用GetOrdinal方法来找
解决方案四:
DataColumnCollectiondcc=dr.GetSchemaTable().Columns;里面没有保存你的istop列,dcc是另一个表的列名集合,我记得有很多项目,都是用来描述dr里“一个字段”的,例如字段名,字段类型,字段长度……dr.GetSchemaTable()返回的是一个DataTable,dtColumnNameColumnSize……很多istop1标题100istop和标题是你数据库里的字段名,你要的istop在这个dt的行里你预期的contains是这样DataTabledcc=mydr.GetSchemaTable();List<string>ColName=newList<string>();foreach(DataRowdrindcc.Rows){ColName.Add(dr[0].ToString());//第一列就是放你业务数据库里的列名,都添加到list}booisExisted=ColName.Contains("istop");
当然我是给你说的原理,你的问题里,可以用更简单的方式
解决方案五:
dr.GetName(x);就可以,x是列序号
解决方案六:
GetSchemaTable()是什么?
解决方案七:
获取列集合这样写dr.Table.Columns;
解决方案八:
我也觉得用DataTable的遍历不错