考虑下面的代码剪断:枚举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'循环的好处 –