Убедитесь, что столбец существует в DataRow перед чтением его значения
Как написать код, который читает DataRow, но если в DataRow его нет, он просто пропускает его и перемещается, например, следующим образом:
string BarcodeIssueUnit;
if (dr_art_line["BarcodeIssueUnit"].ToString().Length <= 0)
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}
Теперь столбец BarcodeIssueUnit
может принадлежать к таблице, но в некоторых случаях этот столбец не существует в таблице. Если он не существует и я его прочитал, я получаю эту ошибку:
System.ArgumentException: Column `BarcodeIssueUnit`
does not belong to table Line.
Я просто хочу запустить проверку, если столбец там нормально, пусть видят значения, если нет, просто пропустите эту часть и продолжайте.
Ответы
Ответ 1
Проверьте имя столбца с помощью DataRow.Table.Columns
. Если там преобразуется значение else, выйдите.
BarcodeIssueUnit = dr_art_line.Table.Columns.Contains("BarcodeIssueUnit")?
dr_art_line["BarcodeIssueUnit"].ToString(): "";
Ответ 2
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
Ответ 3
Вы можете проверить, содержит ли таблица схемы для текущей строки определенный столбец:
if (!dr_art_line.Table.Columns.Contains("BarcodeIssueUnit"))
{
BarcodeIssueUnit = "";
}
else
{
BarcodeIssueUnit = dr_art_line["BarcodeIssueUnit"].ToString();
}