考慮下面的代碼剪斷:枚舉SqlDataReader的列
using (var reader = cmd.ExecuteReader())
{
while(reader.Read())
{
var count = reader.FieldCount; // the first column must be name all subsequent columns are treated as data
var data = new List<double>();
for (var i = 1; i < count; i++)
{
data.Add(Convert.ToDouble(reader[i].ToString()));
}
barChartSeries.Add(new ColumnBarChart.ColumnChartSeries((string)reader[0],
data));
columnChart.xAxis.categories.Add((string)reader[0]);
}
}
有沒有一種簡單的方法來消除for循環?也許使用linq?
閱讀[0]永遠是一個字符串 讀者[0+?]將是一個雙
我想如果可能的話所有的雙打拉成一個列表。
你爲什麼要*消除這裏的循環?我會擺脫雙倍字符串到雙倍的轉換(使用'GetDouble'來代替),但剩下的對我來說似乎還可以... –
@JonSkeet好點 - 我不喜歡循環。這將拉取一個存儲爲json的HighChart對象,反序列化對象,然後根據對象中的conStr標識符查詢數據庫(可能是一個不同的數據庫),然後解析數據,然後重新序列化爲json以在REST中返回服務。速度是我想的某個問題。 – Wjdavis5
你可以用'Enumerable.Range'替換'for'並用'Linq'來完成,但基本上你只是用'foreach'替換'for',在這種情況下,你的代碼對我來說似乎很好,我可以看到沒有重構'for'循環的好處 –