在 C# 中,当使用可能包含所有关联存储过程未使用的列的 SqlDataReader 对象时,能够检查对于特定列的存在变得至关重要。下面是一个满足此需求的扩展方法:
public static class DataRecordExtensions { public static bool HasColumn(this IDataRecord dr, string columnName) { for (int i = 0; i < dr.FieldCount; i++) { if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase)) return true; } return false; } }
使用此扩展方法,您可以在访问列的值之前轻松验证列是否存在。这种方法被认为比依赖异常或 GetSchemaTable() 方法更好,因为它避免了性能损失和异常的不可靠本质。
虽然循环字段可能会带来轻微的性能开销,但缓存结果可以对于涉及循环内频繁列检查的场景,可以减轻这种影响。
以上是如何有效地检查 C# SqlDataReader 中的列是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!