这些扩展方法与DataRow
- 即DataTable
......不是 IDataReader
(等)有关。IIf
不过,您可以在 VB 或 C# 中使用条件执行您想要的操作:
double? val = reader.IsDBNull(index) ? (double?) null : reader.GetDouble(index);
long? vol = reader.IsDBNull(index) ? (long?)null : reader.GetInt64(index);
您当然可以将它们包装为实用方法,也许作为您自己的自定义扩展方法IDataReader
:
public static class DataReaderExtensions
{
public static int? ReadNullableInt32(this IDataReader reader, int index)
{
return reader.IsDBNull(index) ? (int?)null : reader.GetInt32(index);
}
public static long? ReadNullableInt64(this IDataReader reader, int index)
{
return reader.IsDBNull(index) ? (long?)null : reader.GetInt64(index);
}
public static double? ReadNullableDouble(this IDataReader reader, int index)
{
return reader.IsDBNull(index) ? (double?)null : reader.GetDouble(index);
}
public static string ReadNullableString(this IDataReader reader, int index)
{
return reader.IsDBNull(index) ? null : reader.GetString(index);
}
// etc
}
(很抱歉在示例中使用 c# - 但您可能比我能写出准确的vb.net 更好地阅读 c#)