语言:C#
大家好,
我有点卡在这里,希望有人能指出我正确的方向。
我有一个文本文件作为数据源,并制作了一个包含所有数据的数据表。现在我需要从中获取数据创建一个图表。
完整的数据表看起来像这样
datestamp | name_X_1 | name_X_2 | name_Y_1 | name_Y_2
-----------------------------------------------------------------------------------
1/1/199 | somevalue | somevalue | somevalue | somevalue
1/2/199 | somevalue | somevalue | somevalue | somevalue
现在我需要从特定时间获取 name_x_* 列中的所有 name_X_* 值(这将是来自压延控制的变量)。
这就是我需要数据用于图表的方式
datastamp | name_x_data | name_y_data
-------------------------------------------------------
1/1/199 | name_X_1_value | name_y_1_value
1/1/199 | name_X_2_value | name_y_2_value
更困难的是,name_X_* 和 name_y_* 列可以有所不同(X 和 Y 是来自 massurement 的 x 和 y 轴值,并且总是相同数量的列)。在一个文本文件中,它有 10 列,而另一个文本文件可能有 20 列。所以我无法对列名进行硬编码。我需要在 name_X_ 和 name_Y_ 上过滤它们并在特定日期搜索。
我还可以存储列数。因此,如果我们可以为 X 选择第 2 到 10 列,为 Y 选择 10 到 20 列,那就太棒了。可以对数据库中的文本文件进行管理,在这里我输入文本文件的列数。因此,如果有人可以选择使用 count 它也对我有用。
如果有人能指出我正确的方向,我将不胜感激。我卡住了哈哈
谢谢分配!
ps; 我愿意为一个好的解决方案付费:)
这是我到目前为止制作的代码:
DataTable dt = new DataTable();
string[] columns = null;
string FileName = "C:\\datapath\\data.dat";
var lines = File.ReadAllLines(FileName);
// create columns from text file and skip first few rows
if (lines.Count() > 2)
{
columns = lines[1].Split(new char[] { ',' }).Select(x => x.Replace("\"", "")).ToArray();
foreach (var column in columns)
dt.Columns.Add(column);
}
// add data to rows
for (int i = 2; i < lines.Count(); i++)
{
DataRow dr = dt.NewRow();
string[] values = lines[i].Split(new char[] { ',' }).Select(x => x.Replace("\"", "")).ToArray();
for (int j = 0; j < values.Count() && j < columns.Count(); j++)
dr[j] = values[j];
dt.Rows.Add(dr);
}
// Columns filter (under construction) (this is the part i need to be not hard coded)
string[] selectedColumns = new[] { "TIMESTAMP", "sensor_X_001", "sensor_X_002" };
DataTable dt2 = new DataView(dt).ToTable(false, selectedColumns);
// Date filter (under construction)
// string s = "2014-05-21 13:05:00";
// DataRow foundRow = dt2.Tables["TIMESTAMP"].Rows.Find(s);
// data to grid
this.GridView1.DataSource = dt2;
this.GridView1.DataBind();