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

C# 如何验证该列是否存在于DataRow对象中?,c#,asp.net,C#,Asp.net,代码显示它验证DataRow对象的行是否有错误,但我想验证它是否存在。是否有一种方法可以代替使用DataRow的HasError方法来编写代码 感谢您的解答。DataRow有一个表属性,引用了它的来源。 DataTable有一个Columns属性,它是一个 枚举此列表将让您确定表是否包含所需的列。请注意,表中的所有行都有相同的列 例如: 值得指出的是,您可能需要检查是否等于,除非您100%确定EmploymentID永远不能返回null 此外,如果EmploymentID列被类型化为整数,则可以

代码显示它验证DataRow对象的行是否有错误,但我想验证它是否存在。是否有一种方法可以代替使用DataRow的HasError方法来编写代码


感谢您的解答。

DataRow有一个表属性,引用了它的来源。 DataTable有一个Columns属性,它是一个

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

例如:

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

此外,如果EmploymentID列被类型化为整数,则可以通过使用直接转换避免任何类型转换的需要:

bool containsColumn = row.Table.Columns.Any(column => column.ColumnName == "EmploymentID");
或者,使用更简洁的方法,为您执行所有空检查:

EmploymentID = (int)row["EmploymentID"]; 
EmploymentID=row.Field(“EmploymentID”);
如果EmploymentID不是可为null的int,则可以合并该值,如下所示:

EmploymentID =  row.Field<int?>("EmploymentID"); 
EmploymentID=row.Field(“EmploymentID”)??0;

您也可以使用此语句

EmploymentID =  row.Field<int?>("EmploymentID") ?? 0;

非常感谢你,威尔。“答案很好。@Hughes没有任何用于DataColumnCollection的扩展方法。至少在.NET 4.0中没有。@Irshad-,签名
公共静态bool Any(这个IEnumerable源代码,Func谓词)
@Hughes我知道。我补充道。但是.Any不用于DataColumnCollection。请在VS IDE上检查它。@Irshad.Any扩展了Any IEnumerable。DataColumnCollection实现InternalDataCollectionBase,后者实现IEnumerable。如果您有问题,您应该记录另一个问题,而不是将其添加为更多评论。
EmploymentID =  row.Field<int?>("EmploymentID") ?? 0;
row.Table.Columns.Contains("EmploymentID")