Verifique que exista una columna en DataRow antes de leer su valor

¿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.

preguntado el 03 de mayo de 12 a las 14:05

3 Respuestas

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

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

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 or haz tu propia pregunta.