これらの拡張メソッドは、関連していますDataRow
-つまりDataTable
... not 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#を読むほうがよいでしょう)