我如何遍历OracleDataReader的所有列

我有以下代码,我想循环遍历此查询结果中的所有字段,并填充称为字段的字典。

鉴于datareader这可能吗?

OracleCommand command = connection.CreateCommand(); string sql = "Select * from MYTABLE where ID = " + id; command.CommandText = sql; Dictionary fields = new Dictionary(); OracleDataReader reader = command.ExecuteReader(); 

你应该可以做这样的事情:

 Dictionary fields = new Dictionary(); OracleDataReader reader = command.ExecuteReader(); if( reader.HasRows ) { for( int index = 0; index < reader.FieldCount; index ++ ) { fields[ reader.GetName( index ) ] = reader.GetString( index ); } } 

GetSchemaTable将返回有关列的大量信息,包括它们的名称以及大小,类型等。

我假设您希望字典的键是列名,值是行值。 如果是这样,这应该工作:

 var dict = reader.GetSchemaTable().Rows.OfType().Select( r => r["ColumnName"].ToString() ).ToDictionary( cn => cn, cn => reader[cn].ToString() ); 

您还可以使用GetValues()来获取列数,并为每个列调用GetName(int) 。