2010-04-07 7 views
5

Mi C# código es el siguiente:¿Cómo puedo convertir el valor de esta columna a un número entero?

myNum = dt.Columns[0]; 

myNum es un entero y dt es una tabla de datos. El valor en la columna 0 de dt es una cadena ("12"), pero me gustaría convertirlo en un entero. ¿Cómo puedo hacer esto? He intentado:

myNum = int.Parse(dt.Columns[0]); 

... pero eso no funciona. ¿Algunas ideas?

+3

"pero eso no funciona" ... ¿puede ser más específico? – Lazarus

+0

¿por qué dices que no funciona? arroja una excepción? – PierrOz

+0

¡Claro! El editor (Visual Studio) se queja cuando trato de usar int.Parse. Dice "La mejor coincidencia de método sobrecargado para 'int.Parse (cadena)' tiene algunos argumentos inválidos". – Kevin

Respuesta

25

Los valores se almacenan en filas y no en columnas. Tal vez puedas probar:

myNum = int.Parse(dt.Rows[0][0].ToString()); 
+0

¡Impresionante! Eso lo hizo. – Kevin

+0

Sería mejor usar int.TryParse (..) a menos que esté seguro de que el valor siempre será un int. –

+0

Sí, estoy bastante seguro de que el valor siempre será un int. – Kevin

0
Convert.ToInt32(dt.Rows[0][0]) 

Lo anterior sería mejor, si se trata de una variedad de tipos, por ejemplo, dobles (1.0).

3

si Parse arroja una excepción, esto significa que dt.Columns [0] no es una entrada válida. Si se quiere evitar excepción, puede utilizar int.TryParse que devuelve un valor booleano revelador si la conversión se realizó con éxito o no

EDITAR: Por cierto, Darin debe ser correcto: su valor no se almacena en una columna, pero en una celda

+0

+1 para TryParse ya que la columna es una cadena. –

6

Su análisis no funcionaba porque el método de análisis toma una cadena y los datos vuelven a aparecer como un objeto simple.

Además, los datos están en las filas, por lo que tiene dos opciones realmente, (yo prefiero la primera):

método
// This converts the object directly to an integer 
myNum = Convert.ToInt32(dt.Rows[0][0]); 

// This converts the object to a string, and then parses it into an integer 
myNum = int.Parse(dt.Rows[0][0].ToString()); 
+0

Puede o no necesitar la prueba de nulos. – SeaDrive

1

Uso TryParse a analizar el valor

int myNum = 0; 
int.TryParse(dt.rows[0][0].ToString() , out myNum); 

con código anterior, si ocurre un error, el valor de la variable será cero

Cuestiones relacionadas