private int EmploymentID { get; set; }
private void MapFields(DataRow row)
{
if(row.HasError)
EmploymentID = Convert.ToInt32(row["EmploymentID"].ToString());
}
代码显示它验证DataRow对象的行是否有错误,但我想验证它是否存在。有没有一种代码方法而不是使用DataRow的HasError方法?
感谢您的回答。
答案 0 :(得分:8)
您也可以使用这一句话
row.Table.Columns.Contains("EmploymentID")
答案 1 :(得分:6)
DataRow有一个Table属性,引用它来自的DataTable。 DataTable有一个Columns属性,它是DataColumnCollection。
枚举此列表可让您确定表中是否包含所需的列。请注意,表上的所有行都具有相同的列。
例如:
bool containsColumn = row.Table.Columns.Any(column => column.ColumnName == "EmploymentID");
值得指出的是,除非您100%确定EmploymentID永远不会返回null,否则您可能需要检查DBNull的相等性。
此外,如果将EmploymentID列输入为整数,则可以通过使用直接强制转换来避免任何类型转换:
EmploymentID = (int)row["EmploymentID"];
或者,使用DataRowExtensions进行更简洁的方法,为您进行所有空检查:
EmploymentID = row.Field<int?>("EmploymentID");
如果EmploymentID不是可以为空的int,那么您可以将值合并为:
EmploymentID = row.Field<int?>("EmploymentID") ?? 0;