如何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")