how can i loop through all of the columns of the OracleDataReader

前端 未结 2 386
不思量自难忘°
不思量自难忘° 2020-12-31 15:22

I have the following code and i want to loop through all the fields in the result of this query and populate the dictionary called field.

Given a datareader is this

相关标签:
2条回答
  • 2020-12-31 15:41

    You should be able to do something like this:

    Dictionary<string, string> fields = new Dictionary<string, string>();
    OracleDataReader reader = command.ExecuteReader();
    
    if( reader.HasRows )
    {
        for( int index = 0; index < reader.FieldCount; index ++ )
        {
            fields[ reader.GetName( index ) ] = reader.GetString( index );
        }    
    }
    
    0 讨论(0)
  • 2020-12-31 15:53

    GetSchemaTable will return a lot of information about the columns, including their name but also size, type, etc.

    I presume you want the key of the dictionary to be the column name, and the value to be the row value. If so, this should work:

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

    You could also use GetValues() to get the number of columns, and call GetName(int) for each.

    0 讨论(0)
提交回复
热议问题