C# C Windows窗体图表控件-从csv文件绑定多个y值

C# C Windows窗体图表控件-从csv文件绑定多个y值,c#,csv,data-binding,charts,C#,Csv,Data Binding,Charts,这是我第一次接触数据绑定,所以我对所涉及的所有属性和方法都知之甚少。我想将多个系列绑定到一个csv文件,其中第1列是日期时间,第2列到第N列是双精度的。我从WinFormsChartSamples中的示例开始,将单个Y值绑定到csv;但是,请不要相信我了解绑定多个Y值的方法 原代码: string mySelectQuery = "Select * from " + file; string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Sour

这是我第一次接触数据绑定,所以我对所涉及的所有属性和方法都知之甚少。我想将多个系列绑定到一个csv文件,其中第1列是日期时间,第2列到第N列是双精度的。我从WinFormsChartSamples中的示例开始,将单个Y值绑定到csv;但是,请不要相信我了解绑定多个Y值的方法

原代码:

string mySelectQuery = "Select * from " + file;
string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
path + ";Extended Properties=\"Text;HDR=No;FMT=Delimited\"";

OleDbConnection myConnection = new OleDbConnection(ConStr);

// create a database command on the connection using query
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

// open the connection
myCommand.Connection.Open();

// create a database reader
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

// column 1 is a time value, column 2 is a double
// databind the reader to the chart using the DataBindXY method
chart1.Series[0].Points.DataBindXY(myReader, "1", myReader, "2");
以下工作:

myCommand.Connection.Open();
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
chart1.Series[0].Points.DataBindXY(myReader, "1", myReader, "2");

myCommand.Connection.Open();
myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
chart1.Series[1].Points.DataBindXY(myReader, "1", myReader, "3");

myCommand.Connection.Open();
myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
chart1.Series[2].Points.DataBindXY(myReader, "1", myReader, "4");

我可以将上述内容放入循环中,并对整个系列进行迭代,但肯定有比多次读取csv文件更好的方法吗?

事实证明,我确实找到了更好的方法:

string mySelectQuery = "Select * from " + file;
string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Extended Properties=\"Text;HDR=No;FMT=Delimited\"";

OleDbConnection myConnection = new OleDbConnection(ConStr);
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

chart1.DataSource = myCommand;

for (int i = 0; i < chart1.Series.Count; i++) {
    chart1.Series[i].XValueMember = "1";
    chart1.Series[i].YValueMembers = (i+2).ToString();
}
chart1.DataBind(); 
也许这会帮助其他人