我从csv文件中读取了一些列,然后在DataGridView中显示它们。专栏"价值"包含一些3位整数值。我想让datagridview中显示的这个整数值为一个小数位的两倍。转换似乎不起作用。此外,当我加载一个大的csv文件(大约30k行)时,它会立即加载,但转换需要花费太多时间。
using (StreamReader str = new StreamReader(openFileDialog1.FileName)) {
CsvReader csvReadFile = new CsvReader(str);
dt = new DataTable();
dt.Columns.Add("Value", typeof(double));
dt.Columns.Add("Time Stamp", typeof(DateTime));
while (csvReadFile.Read()) {
var row = dt.NewRow();
foreach (DataColumn column in dt.Columns) {
row[column.ColumnName] = csvReadFile.GetField(column.DataType, column.ColumnName);
}
dt.Rows.Add(row);
foreach (DataRow row1 in dt.Rows)
{
row1["Value"] = (Convert.ToDouble(row1["Value"])/10);
}
}
}
dataGridView1.DataSource = dt;
答案 0 :(得分:0)
听起来你有两个问题:
这是可能性
private void Button_Click(object sender, RoutedEventArgs e)
{
cmb.IsEnabled = true;
}
每次读取一行时,您都会遍历数据表的每一行。这意味着当您读取CSV的第10行时,您将遍历第1行的第1-9行。再次使用DataTable!对于你读过的每一行都是如此!重构将该循环拉出ReadLine ......就像这样:
ComboBox