是否有任何聪明的方法来缩短这种淫秽行为?它有效,但它不可读......
int? myVal = r.IsDBNull(r.GetOrdinal("colName")) ? (int?)null : r.GetInt32(r.GetOrdinal("colName"));
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
您可以将该代码放入扩展方法中DbDataReader(或者在IDataReader它实现的接口上更好).这样,看起来很可怕的代码隐藏在一个看起来更漂亮的GetNullableInt32()调用之后:
public static class IDataReaderExtensions
{
public static int? GetNullableInt32(this IDataReader r, string columnName)
{
int? myVal = r.IsDBNull(r.GetOrdinal(columnName))
? (int?) null :
r.GetInt32(r.GetOrdinal(columnName));
return myVal;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用它来调用它:
IDataReader reader = ...;
int? value = reader.GetNullableInt32("colName");
Run Code Online (Sandbox Code Playgroud)
正如伊恩指出的那样,最好只召唤r.GetOrdinal()一次:
public static class IDataReaderExtensions
{
public static int? GetNullableInt32(this IDataReader r, string columnName)
{
int ordinal = r.GetOrdinal(columnName);
int? myVal = r.IsDBNull(ordinal)
? (int?) null :
r.GetInt32(ordinal);
return myVal;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |