为了提高性能我想将datatable转换为datareader。我无法通过查询来做到这一点。那么还有其他方法可以做到吗?将datatable转换为datareader
11
A
回答
30
我知道这是旧的,但这里的答案似乎已经错过了有机磷农药的问题点。
DataTables有一个名为CreateDataReader的方法,它将允许您将DataTable转换为DbDataReader对象。在这种情况下,一个DataTableReader。
DataTable table = new DataTable();
//Fill table with data
//table = YourGetDataMethod();
DataTableReader reader = table.CreateDataReader();
我应该指出,这不会提高性能,因为您应该使用其中一种。
这里有一些更多的资源对此事:
2
例如
public DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
try
{
foreach(DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
while(dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i<schemaTable.Rows.Count;i++)
{
myDataRow[i] = dataReader[i].ToString();
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
return datatable;
}
catch(Exception ex)
{
Error.Log(ex.ToString());
return datatable;
}
}
0
public DataTable GetTable(IDataReader _reader)
{
DataTable dataTable1 = _reader.GetSchemaTable();
DataTable dataTable2 = new DataTable();
string[] arrayList = new string[dataTable1.Rows.Count];
for (int i = 0; i < dataTable1.Rows.Count; i++)
{
DataColumn dataColumn = new DataColumn();
if (!dataTable2.Columns.Contains(dataTable1.Rows[i][ "ColumnName "].ToString()))
{
dataColumn.ColumnName = dataTable1.Rows[i][ "ColumnName "].ToString();
dataColumn.Unique = Convert.ToBoolean(dataTable1.Rows[i][ "IsUnique "]);
dataColumn.AllowDBNull = Convert.ToBoolean(dataTable1.Rows[i][ "AllowDBNull "]);
dataColumn.ReadOnly = Convert.ToBoolean(dataTable1.Rows[i][ "IsReadOnly "]);
dataColumn.DataType = (Type)dataTable1.Rows[i][ "DataType "];
arrayList[i] =dataColumn.ColumnName;
dataTable2.Columns.Add(dataColumn);
}
}
dataTable2.BeginLoadData();
while (_reader.Read())
{
DataRow dataRow = dataTable2.NewRow();
for (int j = 0; j < arrayList.Length ; j++)
{
dataRow[arrayList[j]] = _reader[arrayList[j]];
}
dataTable2.Rows.Add(dataRow);
}
_reader.Close();
dataTable2.EndLoadData();
return dataTable2;
}
+0
仅供参考,DataTable.Loan(DataReader)可以做到这一点以及更多。特别是,当读者使用KeyInfo创建时。 – AMissico 2013-04-11 18:09:41
0
使用DataTable的构造函数,
DataTable table = new DataTable();
//Fill table with data
DataTableReader reader = new DataTableReader(table);
好好看看!
相关问题
- 1. 将DataRow []转换为DataTable的ASP.NET转换
- 2. 将CellSet转换为DataTable
- 3. 将DataTable转换为对象[,]
- 4. 将SPListItemCollection转换为DataTable
- 5. 将Datatable转换为PDF
- 6. C#将Datatable转换为
- 7. 将Iqueryable转换为DataTable
- 8. 将DataTable转换为CSV流
- 9. 将DataSet \ DataTable转换为CSV
- 10. 将DataTable转换为JSON
- 11. 将IEnumerable转换为DataTable
- 12. 将Xml转换为DataTable
- 13. 将LINQ转换为DataTable
- 14. 将XML转换为DataTable
- 15. 将字符串转换为int - datareader
- 16. .net:将通用列表转换为DataReader?
- 17. 如何将DataSet a转换为DataReader?
- 18. DataGrigView转换为DataTable
- 19. 如何将DataTable转换为IDatareader?
- 20. 将DataTable的单列转换为CSV
- 21. 动态地将TreeNode转换为DataTable
- 22. 如何将BindingSource转换为DataTable?
- 23. 将Datatable转换为C#中的数组
- 24. 将DataTable值转换为通用类型
- 25. 如何将Gridview转换为Datatable
- 26. 将DataTable转换为JSON数组
- 27. 在XML中将XML转换为DATATABLE
- 28. 将Json字符串转换为DataTable
- 29. 如何将LINQ结果转换为DATATABLE?
- 30. 将列表转换为DataTable空白{}
我想将datatable转换为datareader。 – user1049021 2012-02-01 06:29:07