Reputation: 1003
How do I write code that reads a DataRow but, if filed in DataRow isn't there, it just skips it and moves on, like this for example:
string BarcodeIssueUnit;
if (dr_art_line["BarcodeIssueUnit"].ToString().Length <= 0)
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}
Now, the Column BarcodeIssueUnit
can belong to the table but, in some cases, that column does not exist in the table. If it's not there and I read it, I get this error:
System.ArgumentException: Column `BarcodeIssueUnit`
does not belong to table Line.
I just want to run a check if the column is there ok, let see the values, if it's not, just skip that part and go on.
Upvotes: 26
Views: 63348
Reputation: 48600
Check for column name using DataRow.Table.Columns
. If there convert value else come out.
BarcodeIssueUnit = dr_art_line.Table.Columns.Contains("BarcodeIssueUnit")?
dr_art_line["BarcodeIssueUnit"].ToString(): "";
Upvotes: 51
Reputation: 460340
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
Upvotes: 6
Reputation: 25595
You can check if the table scheme for the current row contains a specific column:
if (!dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}
Upvotes: 1