Otra Consulta de Objetos

25/01/2007 - 19:00 por Javito | Informe spam
Esto es frecuente, debe tener una solución fácil pero no la encuentro, si yo
recojo un conjunto de filas de una base de datos y por cada una quiero crear
un objeto utilizando un bucle While o For como puedo hacer para que cada
objeto tenga un nombre distinto.

ejemplo: While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..
}
Se que puedo almacenar cada cliente saliente en una colección, pero no hay
alguna forma de que se les dé distinto nombre a cada cliente ligada a un
contador como Cliente1, Cliente2 ...

un saludo

Preguntas similare

Leer las respuestas

#6 Roberto M. Oliva
26/01/2007 - 11:34 | Informe spam
Hola

Porque no utilizas un ArrayList ??
Con tu ejemplo:

System.Collections.ArrayList clientes = new ArrayList();
While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
clientes.add (Cli);
}

Ya tienes un array de clientes:

Cliente[] array = clientes.ToArray ();

Pero , vamos que no necesitas esta ultima conversion, puedes hacer lo
siguiente perfectamente:

Cliente cli = clientes[0];

Espero que te ayude

Saludos
Roberto M. Oliva




While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..


On 25 ene, 21:39, "Juan Diego Bueno Prieto" wrote:
A ver, es tan simple como:

Cliente[] cli = new Cliente[12];

y luego, cuando quieras construir cada miembro del array:

cli[3]=new Cliente();

y eso te tiene que funcionar, porque es así (antes te lo dije mal)

"Javito" escribió en el mensajenews:



> Descartado he probado las siguientes formas y todas dan errores
> como dices Cliente[12] = new Cliente(); --> Error
> Cliente[] Cli[12]= new Cliente(); --> Error
> Cliente Cli[12]= new Cliente(); --> Error
> Cliente[] Cli= new Cliente[12](); --> Error

> y ya no se me ocurren más formas

> "Juan Diego Bueno Prieto" escribió en el mensaje
>news:
>> Más bien es:
>> Cliente[12] = new Cliente();

>> "Javito" escribió en el mensaje
>>news:
>>> Si pero defineme el Array porque un Array necesita definir su dimensión
>>> antes de usarlo y te encuentras con que necesitas decir dos cosas

>>> 1) por Array es necesario Cliente[] Cli = new Cliente[12];
>>> 2) por Cliente es necesario Cliente Cli = new Cliente();

>>> y como casan ambas cosas porque pruebas a hacer algo como
>>> Cliente[] Cli = new Cliente[12]();

>>> y luego haces Cliente[0]. y no te aparecen los atributos públicos de
>>> la clase, si conoces otra forma por favor dimela.

>>> un saludo

>>> "Alberto Poblacion"
>>> escribió en el mensajenews:
>>>> "Javito" wrote in message
>>>>news:
>>>>> Esto es frecuente, debe tener una solución fácil pero no la encuentro,
>>>>> si yo recojo un conjunto de filas de una base de datos y por cada una
>>>>> quiero crear un objeto utilizando un bucle While o For como puedo
>>>>> hacer para que cada objeto tenga un nombre distinto.

>>>>> ejemplo: While (DataReader.Read)
>>>>> {
>>>>> Cliente Cli = new Cliente();
>>>>> Cli.Nombre = DataReader.GetString(0);
>>>>> ..
>>>>> }
>>>>> Se que puedo almacenar cada cliente saliente en una colección, pero no
>>>>> hay alguna forma de que se les dé distinto nombre a cada cliente
>>>>> ligada a un contador como Cliente1, Cliente2 ...

>>>> Lo más simple es un array, llamándolos Cliente[0], Cliente[1],
>>>> Cliente[2], etc.

>>>> Si realmente quieres variables distintas, entonces estás generando
>>>> código dinámicamente en función de los datos leídos. A continuación
>>>> tendrías que compilar ese código para poderlo ejecutar. Se puede hacer
>>>> en .Net (con Reflexión y CodeDom), pero no es nada sencillo. Creo que
>>>> lo que te interesa es un array.

>> Estoy utilizando la versión gratuita de SPAMfighter para usuarios
>> privados.
>> Ha eliminado 3157 correos spam hasta la fecha.
>> Los abonados no tienen este mensaje en sus correos.
>> ¡Pruebe SPAMfighter gratis ya!--
Estoy utilizando la versión gratuita de SPAMfighter para usuarios privados.
Ha eliminado 3157 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis ya!
Respuesta Responder a este mensaje
#7 Rolando
27/01/2007 - 01:08 | Informe spam
Podés usar un tipo mas eficiente que el ArrayList: el List<Cliente>

List<Cliente> aobjClientes = new List<Cliente>();
While (DataReader.Read)
{
Cliente objCliente = new Cliente();
objCliente.Nombre = DataReader["Nombre"];
aobjClientes.Add(objCliente);
}

Saludos

Roberto M. Oliva wrote:
Hola

Porque no utilizas un ArrayList ??
Con tu ejemplo:

System.Collections.ArrayList clientes = new ArrayList();
While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
clientes.add (Cli);
}

Ya tienes un array de clientes:

Cliente[] array = clientes.ToArray ();

Pero , vamos que no necesitas esta ultima conversion, puedes hacer lo
siguiente perfectamente:

Cliente cli = clientes[0];

Espero que te ayude

Saludos
Roberto M. Oliva




While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..


On 25 ene, 21:39, "Juan Diego Bueno Prieto" wrote:
A ver, es tan simple como:

Cliente[] cli = new Cliente[12];

y luego, cuando quieras construir cada miembro del array:

cli[3]=new Cliente();

y eso te tiene que funcionar, porque es así (antes te lo dije mal)

"Javito" escribió en el mensajenews:



Descartado he probado las siguientes formas y todas dan errores
como dices Cliente[12] = new Cliente(); --> Error
Cliente[] Cli[12]= new Cliente(); --> Error
Cliente Cli[12]= new Cliente(); --> Error
Cliente[] Cli= new Cliente[12](); --> Error
y ya no se me ocurren más formas
"Juan Diego Bueno Prieto" escribió en el mensaje
news:
Más bien es:
Cliente[12] = new Cliente();
"Javito" escribió en el mensaje
news:
Si pero defineme el Array porque un Array necesita definir su dimensión
antes de usarlo y te encuentras con que necesitas decir dos cosas
1) por Array es necesario Cliente[] Cli = new Cliente[12];
2) por Cliente es necesario Cliente Cli = new Cliente();
y como casan ambas cosas porque pruebas a hacer algo como
Cliente[] Cli = new Cliente[12]();
y luego haces Cliente[0]. y no te aparecen los atributos públicos de
la clase, si conoces otra forma por favor dimela.
un saludo
"Alberto Poblacion"
escribió en el mensajenews:
"Javito" wrote in message
news:
Esto es frecuente, debe tener una solución fácil pero no la encuentro,
si yo recojo un conjunto de filas de una base de datos y por cada una
quiero crear un objeto utilizando un bucle While o For como puedo
hacer para que cada objeto tenga un nombre distinto.
ejemplo: While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..
}
Se que puedo almacenar cada cliente saliente en una colección, pero no
hay alguna forma de que se les dé distinto nombre a cada cliente
ligada a un contador como Cliente1, Cliente2 ...


Lo más simple es un array, llamándolos Cliente[0], Cliente[1],
Cliente[2], etc.
Si realmente quieres variables distintas, entonces estás generando
código dinámicamente en función de los datos leídos. A continuación
tendrías que compilar ese código para poderlo ejecutar. Se puede hacer
en .Net (con Reflexión y CodeDom), pero no es nada sencillo. Creo que
lo que te interesa es un array.




Estoy utilizando la versión gratuita de SPAMfighter para usuarios
privados.
Ha eliminado 3157 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis ya!--




Estoy utilizando la versión gratuita de SPAMfighter para usuarios privados.
Ha eliminado 3157 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis ya!



Respuesta Responder a este mensaje
#8 Rolando
28/01/2007 - 17:33 | Informe spam
Podes...

Con un ArrayList (tenes que hacer el cast):

((Cliente)aobjClientes[i]).Nombre == "Juan";


Con un List<Cliente> (no es necesario el cast, la sintaxis es identica a
la de un array):

aobjClientes[i].Nombre == "Juan";




Javito wrote:
porque si meto el objeto en el ArrayList para consultarlo tengo que extraer
el objeto para cada consulta y luego compararlo, mientrasque en un array
puedo hacer la consulta con if(Cliente[i].Nombre = = "Juan") ...
cosa que con un ArrayList implicaría la extracción del objeto dado que
existe ArrayList[0],ArrayList[1] etc pero que yo conozca no permiten al
poner un punto obtener los métodos y atributos del objeto que contienen.

un saludo
"Roberto M. Oliva" escribió en el mensaje
news:

Hola

Porque no utilizas un ArrayList ??
Con tu ejemplo:

System.Collections.ArrayList clientes = new ArrayList();
While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
clientes.add (Cli);
}

Ya tienes un array de clientes:

Cliente[] array = clientes.ToArray ();

Pero , vamos que no necesitas esta ultima conversion, puedes hacer lo
siguiente perfectamente:

Cliente cli = clientes[0];

Espero que te ayude

Saludos
Roberto M. Oliva




While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..


On 25 ene, 21:39, "Juan Diego Bueno Prieto" wrote:
A ver, es tan simple como:

Cliente[] cli = new Cliente[12];

y luego, cuando quieras construir cada miembro del array:

cli[3]=new Cliente();

y eso te tiene que funcionar, porque es así (antes te lo dije mal)

"Javito" escribió en el
mensajenews:



Descartado he probado las siguientes formas y todas dan errores
como dices Cliente[12] = new Cliente(); --> Error
Cliente[] Cli[12]= new Cliente(); --> Error
Cliente Cli[12]= new Cliente(); --> Error
Cliente[] Cli= new Cliente[12](); --> Error
y ya no se me ocurren más formas
"Juan Diego Bueno Prieto" escribió en el mensaje
news:
Más bien es:
Cliente[12] = new Cliente();
"Javito" escribió en el mensaje
news:
Si pero defineme el Array porque un Array necesita definir su
dimensión
antes de usarlo y te encuentras con que necesitas decir dos cosas
1) por Array es necesario Cliente[] Cli = new Cliente[12];
2) por Cliente es necesario Cliente Cli = new Cliente();
y como casan ambas cosas porque pruebas a hacer algo como
Cliente[] Cli = new Cliente[12]();
y luego haces Cliente[0]. y no te aparecen los atributos públicos
de
la clase, si conoces otra forma por favor dimela.
un saludo
"Alberto Poblacion"
escribió en el mensajenews:
"Javito" wrote in message
news:
Esto es frecuente, debe tener una solución fácil pero no la
encuentro,
si yo recojo un conjunto de filas de una base de datos y por cada
una
quiero crear un objeto utilizando un bucle While o For como puedo
hacer para que cada objeto tenga un nombre distinto.
ejemplo: While (DataReader.Read)
{
Cliente Cli = new Cliente();
Cli.Nombre = DataReader.GetString(0);
..
}
Se que puedo almacenar cada cliente saliente en una colección, pero
no
hay alguna forma de que se les dé distinto nombre a cada cliente
ligada a un contador como Cliente1, Cliente2 ...


Lo más simple es un array, llamándolos Cliente[0], Cliente[1],
Cliente[2], etc.
Si realmente quieres variables distintas, entonces estás generando
código dinámicamente en función de los datos leídos. A continuación
tendrías que compilar ese código para poderlo ejecutar. Se puede
hacer
en .Net (con Reflexión y CodeDom), pero no es nada sencillo. Creo que
lo que te interesa es un array.




Estoy utilizando la versión gratuita de SPAMfighter para usuarios
privados.
Ha eliminado 3157 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis
ya!--




Estoy utilizando la versión gratuita de SPAMfighter para usuarios
privados.
Ha eliminado 3157 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis ya!




Respuesta Responder a este mensaje
#9 Roberto M. Oliva
29/01/2007 - 10:00 | Informe spam
Hola!!

On 28 ene, 17:33, Rolando wrote:
Podes...

Con un ArrayList (tenes que hacer el cast):

((Cliente)aobjClientes[i]).Nombre == "Juan";



Sera:
((Cliente)aobjClientes[i]).Nombre = "Juan";


Con un List<Cliente> (no es necesario el cast, la sintaxis es identica a
la de un array):

aobjClientes[i].Nombre == "Juan";




Sera:
aobjClientes[i].Nombre = "Juan";

Y para utilizar genericos tiene que trabajar con .NET 2.0

Saludos
Roberto M. Oliva
Respuesta Responder a este mensaje
#10 Rolando
29/01/2007 - 10:46 | Informe spam
Roberto M. Oliva wrote:
Hola!!

On 28 ene, 17:33, Rolando wrote:
Podes...

Con un ArrayList (tenes que hacer el cast):

((Cliente)aobjClientes[i]).Nombre == "Juan";



Sera:
((Cliente)aobjClientes[i]).Nombre = "Juan";



Si tenés razón, estaba haciendo la comparacíón (el ejemplo original era
un if) lo que no va es el punto y coma.


Con un List<Cliente> (no es necesario el cast, la sintaxis es identica a
la de un array):

aobjClientes[i].Nombre == "Juan";




Sera:
aobjClientes[i].Nombre = "Juan";

Y para utilizar genericos tiene que trabajar con .NET 2.0



exacto!


Saludos
Roberto M. Oliva




Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida