Principales respuestas
Ayuda para recorrer objeto list

Pregunta
-
Hola buenas tardes, me podrían ayudar con este problema, intento recorrer un objeto checklistbox cargado por medio de un objeto list, pero no se bien como hacerlo, les comparto código, para que me orienten mejor:
foreach (var item in lbpruebas.CheckedItems)
{
text = string.Format(item.ToString());
}
como aprecian en la imagen, no se como obtener los valores como el IdMetodoEnsayo o el campo DesMetodoEnsayo, espero me puedan orientar, gracias!
miércoles, 19 de junio de 2019 13:47
Respuestas
-
Buenos dias
Comentas que ese checklistbox se lleno con un list<T> de algun tip especifico de objeto.
La forma rápida de solucionarlo es que en tu foreach no utilizar var item sino el tipo con el tipo de la lista
para que accedas a las propiedades del objeto ejemplo.
string text = "";
foreach (MiClase item in lbpruebas.CheckedItems) { text = string.Format(item.idMetodoEnsayo); }
Creo que al utilizar el tipo var pierdes el acceso a las propiedades.
Otra cosa idMetodoEnsayo es una propiedad no un metodo no lleva parentesis
Recuerda utiliza la el nombre de la clase que pusiste en el List<MiClase> antes del item del foreach
- Propuesto como respuesta Alberto PoblacionMVP, Moderator miércoles, 19 de junio de 2019 15:35
- Marcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 15:54
miércoles, 19 de junio de 2019 15:24 -
hola
Por lo que observo en la inspeccion de la imagen la variable item ya tiene una instancia de la clase, solo usas la propiedad
foreach (var item in lbpruebas.CheckedItems) { text = string.Format("{0} {1}", item.IdMetodoEnsayo, item.DesMetodoEnsayo); }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 16:29
miércoles, 19 de junio de 2019 16:15
Todas las respuestas
-
Buenos dias
Comentas que ese checklistbox se lleno con un list<T> de algun tip especifico de objeto.
La forma rápida de solucionarlo es que en tu foreach no utilizar var item sino el tipo con el tipo de la lista
para que accedas a las propiedades del objeto ejemplo.
string text = "";
foreach (MiClase item in lbpruebas.CheckedItems) { text = string.Format(item.idMetodoEnsayo); }
Creo que al utilizar el tipo var pierdes el acceso a las propiedades.
Otra cosa idMetodoEnsayo es una propiedad no un metodo no lleva parentesis
Recuerda utiliza la el nombre de la clase que pusiste en el List<MiClase> antes del item del foreach
- Propuesto como respuesta Alberto PoblacionMVP, Moderator miércoles, 19 de junio de 2019 15:35
- Marcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 15:54
miércoles, 19 de junio de 2019 15:24 -
Ahondando en lo anterior, la razón de que no funcione resulta clara si paras el puntero del ratón encima del "var". Verás que te dice que es "object". Eso se debe a que los items del listbox son de tipo object, y aunque tú sepas que has cargado un tipo concreto de object (lo que tenga tu List<>), el compilador no lo puede inferir a partir de CheckedItems. En estos casos, el remedio que en general tendrías que aplicar en código C# es el de aplicar un "cast" para obtener el tipo deseado:
text = ((Miclase)item).IdMetodoEnsayo;
Sin embargo en este caso concreto hay una solución más sencilla que es la que te han dado en la respuesta anterior: Si pones la clase del objeto dentro del foreach, el foreach ya "sabe" que tiene que hacer ese "cast" y lo hace por tí. Pero aunque esto es más sencillo que escribir expresamente el cast, es importante que entiendas el tema del cast porque lo puedes necesitar en cualquier otro sitio donde no haya un foreach que lo resuelva por ti.
miércoles, 19 de junio de 2019 15:41Moderador -
Hola buenos días! mi pana! gracias por responder, asi quedo:
foreach (SiGe_BE.MetodoEnsayo.MetodoEnsayoList item in lbpruebas.CheckedItems)
{
text = string.Format(item.IdMetodoEnsayo);
}y funciono! gracias!
- Editado Vladimir Angarita miércoles, 19 de junio de 2019 15:54
- Marcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 15:54
- Desmarcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 15:54
miércoles, 19 de junio de 2019 15:53 -
Gracias por el consejo Albert! Saludos!miércoles, 19 de junio de 2019 15:56
-
hola
Por lo que observo en la inspeccion de la imagen la variable item ya tiene una instancia de la clase, solo usas la propiedad
foreach (var item in lbpruebas.CheckedItems) { text = string.Format("{0} {1}", item.IdMetodoEnsayo, item.DesMetodoEnsayo); }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Vladimir Angarita miércoles, 19 de junio de 2019 16:29
miércoles, 19 de junio de 2019 16:15