如何validation列是否存在于DataRow对象中?

private int EmploymentID { get; set; } private void MapFields(DataRow row) { if(row.HasError) EmploymentID = Convert.ToInt32(row["EmploymentID"].ToString()); } 

该代码显示它validationDataRow对象是否在其行上有错误但我想validation它是否存在。 是否有一种代码方法而不是使用DataRow的HasError方法?

谢谢你的回答。

DataRow有一个Table属性,引用它来自的DataTable 。 DataTable有一个Columns属性,它是一个DataColumnCollection 。

枚举此列表将允许您确定表是否包含所需的列。 请注意,表上的所有行都具有相同的列。

例如:

 bool containsColumn = row.Table.Columns.Any(column => column.ColumnName == "EmploymentID"); 

值得指出的是,您可能需要检查DBNull的相等性,除非您100%确定EmploymentID永远不会返回null。

此外,如果将EmploymentID列键入为整数,则可以通过使用直接强制转换来避免任何类型转换的需要:

 EmploymentID = (int)row["EmploymentID"]; 

或者,使用DataRowExtensions进行更简洁的方法,它会为您执行所有空值检查:

 EmploymentID = row.Field("EmploymentID"); 

如果EmploymentID不是可以为空的int,那么您可以将值合并为:

 EmploymentID = row.Field("EmploymentID") ?? 0; 

您也可以使用这一个声明

 row.Table.Columns.Contains("EmploymentID")