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;
}

そして、それを1つの関数に凝縮したかったのですが、最小限のコードで、理想的には次のようなものが欲しいです:

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 に答える