none
Como llenar una cadena de strings con un DataTable RRS feed

  • Pregunta

  • Buenas tardes programadores, quería que me ayudaran con este problema.
    Tengo el siguiente arreglo de strings el cual tengo que repetir hasta n numero de conceptos que exista en una base de datos.
    En donde cada n registros tiene que llenar cada parrafo, es sobre una facturacion, he tratado de hacerlo con FOREACH, pero no he podido, gracias de igual manera.



    string[] conceptos = { "[Concepto" + n + "]",
                        "ClaveProdServ=",
                        "NoIdentificacion=SKU",
                        "Cantidad=",
                        "Clave Unidad=",
                        "Unidad=",
                        "Descripcion=",
                        "ValorUnitario=",
                        "Importe=",
                        "TrasladoBase1=",
                        "TrasladoImpuesto1=002=",
                        "TrasladoTipoFactor1=Tasa",
                        "TrasladoTasaOCuota1=0.16",
                        "TrasladoImporte1=" };
    miércoles, 3 de enero de 2018 23:41

Respuestas

  • ok, 

    suponemos que la variable Datatable Dt, contiene los registos por lo que haremos un recorrido con lamba de cada datarow (yo uso lambda en lugar de foreach para acelerar el proceso), te simplifico los conoceptos para facilitar el ejemplo a 3.

    List<string> res = new List<string>();

    int i = 0;

    dt.Rows.Cast<DataRow>().ToList().ForEach(dr = > {

    string[] itemConcep = { "[Concepto" +( i++).ToString() + "]",
                        "ClaveProdServ=" + dr["ClaveProdServ"].ToString(),
                        "NoIdentificacion=SKU",
                        "Cantidad=" + dr["Cantidad"].ToString()};

    res = res.Concat(itemConcep.Cast<string>().ToList());

    });

    string[] conceptos = res.ToArray<string>();

    Saludos!



    • Propuesto como respuesta vyrcyrus_ jueves, 4 de enero de 2018 0:15
    • Marcado como respuesta h4x0r_ing jueves, 4 de enero de 2018 0:25
    • Editado vyrcyrus_ jueves, 4 de enero de 2018 1:02
    jueves, 4 de enero de 2018 0:14
  • { "[Concepto" + 1 + "]",
                        "ClaveProdServ=123",
                        "NoIdentificacion=SKU",
                        "Cantidad=5",
                        "Clave Unidad=hu",
                        "Unidad=",
                        "Descripcion=",
                        "ValorUnitario=2",
                        "Importe=",
                        "TrasladoBase1=",
                        "TrasladoImpuesto1=002=",
                        "TrasladoTipoFactor1=Tasa",
                        "TrasladoTasaOCuota1=0.16",
                        "TrasladoImporte1="
                        "[Concepto" + 2 + "]",
                        "ClaveProdServ=12853",
                        "NoIdentificacion=SKU",
                        "Cantidad=1",
                        "Clave Unidad=prueba",
                        "Unidad=32",
                        "Descripcion=",
                        "ValorUnitario=2",
                        "Importe=",
                        "TrasladoBase1=",
                        "TrasladoImpuesto1=002=",
                        "TrasladoTipoFactor1=Tasa",
                        "TrasladoTasaOCuota1=0.16",
                        "TrasladoImporte1=" };

    Osea que la cadena de string se repetiera hasta cierto numero de registros que exista(un count de sql).  Donde "Concepto"+N+ n sea el total de registros.

    miércoles, 3 de enero de 2018 23:53

Todas las respuestas

  • Podrias poner un par de ejemplos de arreglos que deseas obtener para entender mejor que problema tienes ? y tambien los registros que lo generarán.

    También seria de ayuda que pongas el código de foreach que usas para ver mas o menos que es lo que tienes mal.

    gracias.,

    miércoles, 3 de enero de 2018 23:49
  • { "[Concepto" + 1 + "]",
                        "ClaveProdServ=123",
                        "NoIdentificacion=SKU",
                        "Cantidad=5",
                        "Clave Unidad=hu",
                        "Unidad=",
                        "Descripcion=",
                        "ValorUnitario=2",
                        "Importe=",
                        "TrasladoBase1=",
                        "TrasladoImpuesto1=002=",
                        "TrasladoTipoFactor1=Tasa",
                        "TrasladoTasaOCuota1=0.16",
                        "TrasladoImporte1="
                        "[Concepto" + 2 + "]",
                        "ClaveProdServ=12853",
                        "NoIdentificacion=SKU",
                        "Cantidad=1",
                        "Clave Unidad=prueba",
                        "Unidad=32",
                        "Descripcion=",
                        "ValorUnitario=2",
                        "Importe=",
                        "TrasladoBase1=",
                        "TrasladoImpuesto1=002=",
                        "TrasladoTipoFactor1=Tasa",
                        "TrasladoTasaOCuota1=0.16",
                        "TrasladoImporte1=" };

    Osea que la cadena de string se repetiera hasta cierto numero de registros que exista(un count de sql).  Donde "Concepto"+N+ n sea el total de registros.

    miércoles, 3 de enero de 2018 23:53
  • ok, 

    suponemos que la variable Datatable Dt, contiene los registos por lo que haremos un recorrido con lamba de cada datarow (yo uso lambda en lugar de foreach para acelerar el proceso), te simplifico los conoceptos para facilitar el ejemplo a 3.

    List<string> res = new List<string>();

    int i = 0;

    dt.Rows.Cast<DataRow>().ToList().ForEach(dr = > {

    string[] itemConcep = { "[Concepto" +( i++).ToString() + "]",
                        "ClaveProdServ=" + dr["ClaveProdServ"].ToString(),
                        "NoIdentificacion=SKU",
                        "Cantidad=" + dr["Cantidad"].ToString()};

    res = res.Concat(itemConcep.Cast<string>().ToList());

    });

    string[] conceptos = res.ToArray<string>();

    Saludos!



    • Propuesto como respuesta vyrcyrus_ jueves, 4 de enero de 2018 0:15
    • Marcado como respuesta h4x0r_ing jueves, 4 de enero de 2018 0:25
    • Editado vyrcyrus_ jueves, 4 de enero de 2018 1:02
    jueves, 4 de enero de 2018 0:14
  • Muchas gracias :)

    jueves, 4 de enero de 2018 0:25
  • Oye falta un paréntesis en ForEach( donde acaba?
    jueves, 4 de enero de 2018 0:29
  • si disculpa tienes razón lo escribí de cabeza y lo olvide, detrás de la llave en la ante penúltima linea ahí hay que ponerlo y detrás un Punto y coma. 

    El  es una expresión lambda que trata cada elemento datarow (dr) de la colección de entrada como si fuera una función(en este caso anónima)


    jueves, 4 de enero de 2018 0:48
  • Podrías volver a escribir bien, no me soluciona. Gracias
    jueves, 4 de enero de 2018 0:54