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