none
Llenar array desde un SP en mvc 2 con visual studio 2008 RRS feed

  • Pregunta

  • Hola a todos, mi caso es el siguiente:

    Desde mi control llamo al siguiente procedimiento:

    var dt = servicio.selectTabla("2013","05");

    Esto me devuelve un listado que puede tener 1 o más registros, ejemplo:

    Aquí me encuentro con 2 inconvenientes :

    1.- Necesito capturar todos los valores del campo "codigo" en un arreglo.Ya  que deseo mandarlos como parámetros a otro SP.

    2.- Cómo puedo hacer para que mi nueva variable que tiene todos los codigo del SP anterior pueda hacer un foreach con cada uno de los registros?

    Espero su gentil ayuda :)


    martes, 16 de julio de 2013 22:41

Todas las respuestas

  • Presumo que el método selectTabla devuelve un objeto de tipo DataTable (ya que lo has asignado a una variable que se llama "dt"). En ese caso, para copiar los valores del campo "codigo" a un array, puedes usar un bucle para iterar sobre los registros del dt:

    int[] codigos = new int[dt.Rows.Count];
    for (int i=0; i<dt.Rows.Count; i++)
    {
        DataRow dr = dt.Rows[i];
        codigos[i]=(int)dr["codigo"];
    }
    //Aquí el array "codigos" contiene todos los valores

    Otra alternativa sería usar LINQ-to-DataSets, que te permitiría realizar la operación anterior con una sola línea de código, pero no sería ni más eficiente ni más claro.

    miércoles, 17 de julio de 2013 6:27
  • He cometido un error al declarar la variable con el nombre "dt" ya que NO es un datatable.

    sería de la siguiente manera: 

    var vRegistro = servicio.selectTabla("2013","05");

    alguna idea? :(

    miércoles, 17 de julio de 2013 13:17
  • Pero ¿qué tipo tiene la variable? ¿Qué clase devuelve el método selectTabla?

    Esta es una de las razones por la que se recomienda NO usar "var" para declarar las variables. El abuso de esta palabra vuelve el código poco legible, y es recomendable reservarlo casi exclusivamente para los casos en los que haya que declarar una variable de un tipo anónimo.

    Deberías ponerlo como

    NombreDeLaClase vRegistro = servicio.selectTabla(...);

    y a continuación detallar en el mensaje cuáles son las características de NombreDeLaClase, si no son evidentes a partir de su nombre. De otra manera, no se puede dar respuesta a tu pregunta de "cómo extraigo los contenidos de esa clase", mientras no sepamos en qué consiste esa clase.

    miércoles, 17 de julio de 2013 14:21