es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extrayendo valor de una lista de object[]

Estoy trabajando con una base de datos Firebird y el siguiente código extrae algunos datos:

FbDataReader reader = readCommand.ExecuteReader();

var rows = new List<object>();
while (reader.Read())
{
   var columns = new object[reader.FieldCount];
   reader.GetValues(columns);
   rows.Add(columns);
}

Ahora que tengo mis datos leídos en “rows”, se ve así:

Imagen de los datos

“ЛР КЛ1 220кВ” es el valor de cadena que necesito extraer.
El siguiente código se supone que lo hace:

var nameOfProperty = "nombre_de_la_propiedad";
var propertyInfo = rows[1].GetType().GetProperty(nameOfProperty);
var value = propertyInfo.GetValue(rows[1], null);

Obtengo System.NullReferenceException en la última línea porque “nombre_de_la_propiedad” debe contener un nombre de propiedad real. ¿Cómo obtengo el nombre de propiedad correcto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El código proporcionado intenta recuperar una propiedad por nombre, pero no hay indicación de que la variable “property_name” se haya establecido con el nombre real de la propiedad que se está buscando. Para obtener el nombre de la propiedad correcta, es necesario conocer la estructura del objeto que se encuentra almacenado en la lista “rows”. A partir de los datos mostrados en la captura de pantalla, parece que cada fila en la lista es un arreglo de objetos, y cada elemento en el arreglo corresponde a una columna en la tabla de la base de datos. Para acceder al valor de una columna específica, es necesario saber el índice de esa columna en el arreglo.

    Por ejemplo, si el valor de tipo string que se necesita extraer se encuentra en la segunda columna de la tabla, se podría modificar el código de esta manera:

    var columnIndexOfTargetValue = 1;
    var value = rows[1][columnIndexOfTargetValue];
    

    Este código recuperaría la segunda fila en la lista “rows” y extraería el valor de la segunda columna (índice de columna 1). Ten en cuenta que esto supone que los datos en la lista “rows” están ordenados de la misma forma que las columnas en la tabla de la base de datos. Si se ha cambiado el orden de las columnas, será necesario ajustar el índice en consecuencia.

Comments are closed.