Verifique que exista una columna en DataRow antes de leer su valor
Frecuentes
Visto 60,193 veces
24
¿Cómo escribo un código que lee un DataRow pero, si no está archivado en DataRow, simplemente lo omite y continúa, como este, por ejemplo:
string BarcodeIssueUnit;
if (dr_art_line["BarcodeIssueUnit"].ToString().Length <= 0)
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}
Ahora, la columna BarcodeIssueUnit
puede pertenecer a la tabla pero, en algunos casos, esa columna no existe en la tabla. Si no está allí y lo leo, me sale este error:
System.ArgumentException: Column `BarcodeIssueUnit`
does not belong to table Line.
Solo quiero verificar si la columna está bien, veamos los valores, si no es así, simplemente omita esa parte y continúe.
3 Respuestas
50
Verifique el nombre de la columna usando DataRow.Table.Columns
. Si hay valor de conversión, sale.
BarcodeIssueUnit = dr_art_line.Table.Columns.Contains("BarcodeIssueUnit")?
dr_art_line["BarcodeIssueUnit"].ToString(): "";
contestado el 03 de mayo de 12 a las 14:05
5
if(dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
{
BarcodeIssueUnit = dr_art_line.Field<String>("BarcodeIssueUnit");
}
else
{
BarcodeIssueUnit = String.Empty;
}
http://msdn.microsoft.com/en-us/library/system.data.datacolumncollection.contains.aspx
contestado el 03 de mayo de 12 a las 14:05
1
Puede verificar si el esquema de la tabla para la fila actual contiene una columna específica:
if (!dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}
contestado el 03 de mayo de 12 a las 14:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# or haz tu propia pregunta.
VB, todavía un duplicado: stackoverflow.com/questions/1984893/… - nawfal
Posible duplicado de ¿Cómo puedo validar si la columna existe en un objeto DataRow? - C-Pound Guru