Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Como convertir parametros de clase a lista?

Estas en el tema de Como convertir parametros de clase a lista? en el foro de .NET en Foros del Web. Hola, Tengo la siguiente clase: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C#: Ver original public class BankList {     public string bankCtry { get ; set ; ...
  #1 (permalink)  
Antiguo 06/05/2013, 11:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Como convertir parametros de clase a lista?

Hola,
Tengo la siguiente clase:
Código C#:
Ver original
  1. public class BankList
  2. {
  3.     public string bankCtry { get; set; }
  4.     public string bankKey { get; set; }
  5.     public string bankName { get; set; }
  6.     public string city { get; set; }
  7.     public string region { get; set; }
  8.     public string bankNo { get; set; }
  9. }

Estos datos los obtengo de la siguiente manera:
Código C#:
Ver original
  1. public List<BankList> getSAP(String search)
  2.     {
  3.  
  4.         string param = "";
  5.         param = search.ToString();
  6.         try
  7.         {
  8.             //RfcDestination prd = RfcDestinationManager.GetDestination("IDES");
  9.            
  10.             BankList objBankList = new BankList();
  11.             List<BankList> objBank = new List<BankList>();
  12.             RfcRepository repo = prd.Repository;
  13.             IRfcFunction companyBapi = repo.CreateFunction("BAPI_BANK_GETLIST");
  14.             companyBapi.SetValue("BANK_CTRY", param);
  15.             companyBapi.SetValue("MAX_ROWS", 2);
  16.             companyBapi.Invoke(prd);
  17.  
  18.             List<IRfcStructure> irc = new List<IRfcStructure>();
  19.             IRfcTable detail = companyBapi["BANK_LIST"].GetTable();
  20.             List<string> cnt = new List<string>();
  21.  
  22.             foreach (IRfcStructure ir in detail)
  23.             {
  24.  
  25.                 objBank.Add(new MyBackendConfig().Insert(ir));
  26.             }
  27.             repo.ClearTableMetadata();
  28.             return objBank;

Y el objeto MyBackendConfig tiene lo sig:
Código C#:
Ver original
  1. public BankList Insert(IRfcStructure ir)
  2.             {
  3.                 BankList bklist = new BankList();
  4.                 bklist.bankCtry = ir.GetString("BANK_CTRY");
  5.                 bklist.bankName = ir.GetString("BANK_NAME");
  6.                 bklist.bankKey = ir.GetString("BANK_KEY");
  7.                 bklist.city = ir.GetString("CITY");
  8.                 return bklist;
  9.             }

Lo que quiero es convertir el objeto que regresa objBank a tipo Lista porque de ahi lo quiero convertir a tipo Datatable para poderlo mostrar en un Gridview. Pero no puedo porque la funcion que tengo para hacer esto, recibe como parameteo un objeto de tipo List<string> y no uno de List<BankList>
Alguien puede ayudarme?
Saludos.

Última edición por th3r0rn; 06/05/2013 a las 11:14
  #2 (permalink)  
Antiguo 06/05/2013, 11:40
(Desactivado)
 
Fecha de Ingreso: abril-2013
Mensajes: 70
Antigüedad: 11 años
Puntos: 5
Respuesta: Como convertir parametros de clase a lista?

Yo empezaría por decirte que aumentes la calidad de tu codigo.

Código:
public BankList Insert(IRfcStructure ir)
{
    return new BankList
    {
       bankCtry = ir.GetString("BANK_CTRY"),
       bankName = ir.GetString("BANK_NAME"),
       bankKey = ir.GetString("BANK_KEY"),
       city = ir.GetString("CITY")
    }
 }
Luego, estaría bueno ponerle nombres adecuados a las properties:

Código C++:
Ver original
  1. public class BankList
  2. {
  3.     public string Country { get; set; }
  4.     public string Key { get; set; }
  5.     public string Name { get; set; }
  6.     public string City { get; set; }
  7.     public string Region { get; set; }
  8.     public string BankNumber { get; set; }
  9. }

y Ademas por qué se llaman "BankList" una clase que no es un List<T>? es muy confuso esto. te sugiero que reconsideres tus naming conventions.

Luego, en vez de usar todo el tiempo el Type de las cosas para declarar las variables, te recomiendo que uses var:

Código C++:
Ver original
  1. var repo = prd.Repository; //Esta linea no tiene sentido y se puede omitir.
  2.  
  3. var companyBapi = repo.CreateFunction("BAPI_BANK_GETLIST");
  4. companyBapi.SetValue("BANK_CTRY", param);
  5. companyBapi.SetValue("MAX_ROWS", 2);
  6. companyBapi.Invoke(prd);
Luego, para convertir una List<T> en una List<T2> podes usar el metodo Select de LinQ:

Código C++:
Ver original
  1. objBank = Detail.Select(x => new MyBackendConfig()).Insert(x)).ToList();

Además de eso, la clase MyBackendConfig tiene algo? parece un diseño bastante precario tener que instanciar una clase solo para llamar a un metodo. En cualquier caso pondría el Insert ese como un método mas en la clase en donde lo estés usando. Y por qué se llama Insert si no hace nada más que convertir de una clase a otra? es muy confuso esto.

Última edición por Malenko; 06/05/2013 a las 23:10
  #3 (permalink)  
Antiguo 06/05/2013, 13:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Como convertir parametros de clase a lista?

Hola HighCore,
Muchas gracias por tu respuesta, pero aun tengo problemas, ahora, respecto a lo de mejorar el codigo, te agradezco tus consejos, pasa que lo que intento hacer es obtener datos de una tabla de un sistema SAP desde .NET, por eso es que ves ciertos detalles, como por ejemplo eso de cabiar los nombres que tengo en bankCtry etc... Esto es porque asi se encuentran en el sistema de SAP, y el codigo es porque estoy implementando codigo de ejemplo que encontre en SAP.COM con modificaciones y clases mias: http://scn.sap.com/thread/3149160

Lo que preguntas de porque se llama BankList es porque asi se llama la BAPI (mejor concida en otros lenguajes como FUNCION o METODO) en SAP la cual obtiene la lista de bancos de la compañia.

Respecto al problema que tengo, quiero pasar los datos que obtenogo a una lista para despues pasarlos al Grid.
Cuando pongo el codigo de Linq que me has pasado, me da error:
http://www.postimg.net/viewer.php?fi...1864174850.png

Sin ese codigo del Linq Logro obtener los datos bien, pero no se como pasarlos al grid o a la lista.
En la siguiente imagen se muestra que he obtenido datos y que limite el numero de registros a obtener a 2:


No se si ahora puedas entenderme, y si me podrias ayudar con algun tip o ejemplo de como poder mostrar esos datos :(
  #4 (permalink)  
Antiguo 06/05/2013, 13:32
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Como convertir parametros de clase a lista?

PERDON!!
Mi nivel de estupides esta hoy al 100% ya me he fijado bien en mi error y en el otro post que me comentaste de que bajara el retrun Bankobj,
tenia que poner el grid antes de eso. ahora ya veo los datos y los muestro en el grid: como se ve en la siguiente imagen:
http://postimg.net/viewer.php?file=8...7483457201.png

Código C#:
Ver original
  1. repo.ClearTableMetadata();
  2.  
  3.            // objBank = detail.Select(x => new MyBackendConfig()).Insert(x).ToList();
  4.             GridView1.DataSource = objBank;
  5.             DataBind();
  6.             //Response.Write("df" + objBank[0].city);
  7.             return objBank;
De igual forma muchas gracias por la ayuda y consejos, te dare otro punto por la buana ayuda que me has dado.
Y como consejo de amigo te recomendaria que le dieras una vuelta a ejemplos de conexion a SAP desde C# por si algun dia lo necesitas.
Saludos.

Etiquetas: clase, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.