我正在阅读一个SqlCeDataReader并评估如下值:
if(reader["abc"] != DBNull.Value)
Abc = (int)reader["abc"];
if(reader[dude] != DBNull.Value)
Dude = (string)reader[dude];
int Abc
{
get;
set;
}
string Dude
{
get;
set;
}
我想将其压缩为一个函数,但代码量最少,理想情况下我想要这样的东西:
Dude = GetField( "dude", reader );
如果没有什么可返回的,请让它自行解决返回 NULL。这可能吗?
你可以编写一个扩展方法,如下所示:
public static string GetSafeString(this IDataReader reader, string name)
{
int ordinal = reader.GetOrdinal(name);
return reader.IsDBNull(ordinal) ? null : reader.GetString(ordinal);
}
并使用:
Dude = reader.GetSafeString("dude");
然而!就我个人而言,我建议看看像dapper-dot-net这样的东西,它将为你处理所有的物化代码,所以你只需写:
string region = "North";
var users = connection.Query<User>(
"select * from Users where Region = @region", // <=== query
new { region } // <=== parameters
).ToList();