Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C数据表数据到图表_C#_Search_Datatable_Columnname - Fatal编程技术网

C# C数据表数据到图表

C# C数据表数据到图表,c#,search,datatable,columnname,C#,Search,Datatable,Columnname,语言:C 大家好 我有点困在这里,希望有人能给我指出正确的方向 我有一个文本文件作为数据源,并制作了一个包含所有数据的数据表。现在我需要从中获取数据,创建一个图表 完整数据表如下所示 datestamp | name_X_1 | name_X_2 | name_Y_1 | name_Y_2 ---------------------------------------------------------------------------

语言: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_*值,这将是calander控件的变量

这就是我需要图表数据的方式

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是一个集合中的X和y轴值,并且总是相同数量的列。一个文本文件有10列,另一个文本文件可能有20列。所以我不能硬编码列名。我需要在name_X_uuu和name_Y_uu上对它们进行筛选,并在特定日期进行搜索

我还可以存储列数。所以,如果我们能在第2列中为X选择10到20,为Y选择10到20,那就太棒了。对数据库中的文本文件进行管理是可以的,我在这里输入文本文件的列数。所以,如果有人可以选择使用count,我也可以

如果有人能给我指出正确的方向,我会非常感激。我被卡住了哈哈

谢谢你

聚苯乙烯;我愿意为一个好的解决方案付费:

这是我到目前为止编写的代码:

 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();

找到了一个解决方案,并认为我应该分享它:

DataTable result = new DataTable();
        result.Columns.Add("datestamp", typeof(String));
        result.Columns.Add("name_x_data", typeof(String));
        result.Columns.Add("name_y_data", typeof(String));
        DataRow drresult;
        foreach (DataRow datarow in dt.Rows)
        {
            for (int i = 1; i <= dt.Columns.Count / 2; i++)
            {
                drresult = result.NewRow();
                drresult["datestamp"] = datarow["datestamp"];
                drresult["name_x_data"] = datarow["name_X_" + i];
                drresult["name_y_data"] = datarow["name_Y_" + i];
                result.Rows.Add(drresult);
            }
        }

这是一个写得很好的问题,不幸的是,它太宽泛了,脱离了主题。这意味着你要求为自己做很多事情。我建议你自己尝试一下,然后在你的问题中加入这些代码。试着专注于一个更具体的问题,而不是一个完整的问题specification@apomene你什么都读了吗?好吧,让我用我目前得到的来编辑我的帖子:@Reniuz事实是我读了not@apomene很明显,您在第一次评论中没有提到: