private DataRow getDataRowFromReader(IDataReader reader)
{
DataRow row = new DataRow();
DataTable tbl = new DataTable();
for (int i = 0; i < reader.FieldCount; i++)
{
Type type = reader[i].GetType();
if(type.Equals(Type.GetType("DBNull")) || type.Equals(Type.GetType("System.DBNull")))
type = typeof(string);
DataColumn col = new DataColumn(reader.GetName(i), type);
tbl.Columns.Add(col);
}
row = tbl.NewRow();
for (int i = 0; i < reader.FieldCount; i++)
{
Type readerType = reader[i].GetType();
Type rowType = row[i].GetType();
if (readerType.Equals(rowType))
row[i] = reader.GetValue(i);
else
row[i] = reader.GetString(i);
}
return row;
}
私はDBNullを最初のループで処理しようとしていますが、2番目にはDBNull型のNewRow()で作成されたすべての行があります。DataRow型はDBNullです
rowType〜DBNull
これはどうしてですか?
達成しようとしていることは何ですか? – abatishchev
DataReaderを使用する[DataTableのLoadメソッド](http://msdn.microsoft.com/en-us/library/7x8ccbsb.aspx)を引数として使用しないのはなぜですか? 'DataTable dt =新しいDataTable(); dt.Load(reader); ' –