爲了提高性能我想將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