我有一個Sql SP需要大約1分鐘運行,返回25,000行數據。 (可以返回多個數據集)。c#SqlDataReader高效地XElement
當前嘗試將此轉換爲XElement/XDocument以生成多個報表,結果是c#方法將此轉換超過30分鐘,這需要30分鐘的Sql Connection \ Command超時,這太長了。
任何人都可以幫助排除故障/找到我可以改進以下轉換代碼,因爲在這裏必須有一個巨大的低效率。
呼叫
public void xyzCall()
{
....
XElement result = SqlDataReadertoXML(sqlcommand.ExecuteReader());
....
}
轉換功能
private XElement SqlDataReadertoXML(SqlDataReader datareader)
{
XElement results = new XElement("ResultSets");
// Read Next RecordSet
do
{
XElement result = new XElement("ResultSet");
//Read Next Row in this RecordSet
while (datareader.Read())
{
XElement datanode = new XElement("Item");
// Read Each Column in this RecordSet
for (int i = 0; i < datareader.FieldCount; i++)
{
// Node.Attr("Name") = Column Name, Node.Value = Field
if (datareader.GetName(i) != "") datanode.Add(new XElement(datareader.GetName(i), datareader[i].ToString()));
}
result.Add(datanode);
}
results.Add(new XElement(result));
} while (datareader.NextResult());
datareader.Close();
return results;
}
您對LINQ to XML是否是瓶頸有何把握?如果你取出LINQ to XML位,但仍然獲取所有數據(仍然調用'datareader.GetName(i)'和'datareader [i] .ToString()')需要多長時間? –