このようなことをする方法はありますか:
(SqlDbType.Int).Parse(dtbDataTable.Rows[0]["Id"])
このようなことをする方法はありますか:
(SqlDbType.Int).Parse(dtbDataTable.Rows[0]["Id"])
それは難しいと思いますし、最も読みやすい方法ではありません。TinyInt、SmallInt、および null 許容値を全面的にサポートする拡張メソッドを介してこれを処理します。例えば:
using (var dr = new SafeDataReader(cmd.ExecuteReader()) {
while (dr.Read()) {
int? id = dr.GetNullableIntFromSqlTinyInt(0);
// Other stuff like that to handle type conversions
}
}
SafeDataReader は CSLA ビジネス オブジェクト フレームワークの一部ですが、必要に応じて独自の DataReader を実装することもできます。これははるかに読みやすく、舞台裏のすべての解析ロジックを拡張メソッドにカプセル化します。
残念だけど違う。SqlDbType は列挙型であるため、(SqlDbType.Int)
実際には型ではなく整数値になります。これを行うために私が考えることができる唯一の方法は、ある種の switch ステートメントです。
switch (SqlDbType dbType)
{
case SqlDbType.Int:
int value = Int32.Parse(dtbDataTable.Rows[0]["Id"]);
//Do stuff with this value
//repeat for other types
}