1

我正在阅读 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 。那可能吗?

4

1 回答 1

3

您可以编写一个扩展方法,例如:

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();
于 2012-05-31T07:03:12.630 回答