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

时间:2012-03-13 03:08:32

标签: c# asp.net

private int EmploymentID { get; set; }

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

代码显示它验证DataRow对象的行是否有错误,但我想验证它是否存在。有没有一种代码方法而不是使用DataRow的HasError方法?

感谢您的回答。

2 个答案:

答案 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;
相关问题