C# 最快的方法是什么?

C# 最快的方法是什么?,c#,json,asp.net-mvc,angularjs,fusioncharts,C#,Json,Asp.net Mvc,Angularjs,Fusioncharts,我正在使用ASP.NETMVC、Angular.js、SQLServer和Fusion图表构建仪表板。我所有用于制图的数据都存储在数据库中,我通过存储过程获取它们。现在我需要将结果从存储过程传递到Json/XML,只有Fusion图表支持的格式。转换此数据的最佳方法是什么: Hour Input Output InTarget OutTarget 7 22314 18537 6500 4875 8 36395 29931 6500 48

我正在使用ASP.NETMVC、Angular.js、SQLServer和Fusion图表构建仪表板。我所有用于制图的数据都存储在数据库中,我通过存储过程获取它们。现在我需要将结果从存储过程传递到Json/XML,只有Fusion图表支持的格式。转换此数据的最佳方法是什么:

Hour Input   Output  InTarget  OutTarget
7    22314   18537    6500      4875
8    36395   29931    6500      4875
9    32661   28518    6500      4875
10   34895   29793    6500      4875
11   30300   26538    6500      4875
12   31011   26898    6500      4875
13   16363   13716    6500      4875  
进入这个Json

{
                "chart": {
                    "caption": "Input and Output",
                    "numberprefix": "$",
                    "plotgradientcolor": "",
                    "bgcolor": "FFFFFF",
                    "showalternatehgridcolor": "0",
                    "divlinecolor": "CCCCCC",
                    "showvalues": "0",
                    "showcanvasborder": "0",
                    "canvasborderalpha": "0",
                    "canvasbordercolor": "CCCCCC",
                    "canvasborderthickness": "1",
                    "yaxismaxvalue": "30000",
                    "captionpadding": "30",
                    "yaxisvaluespadding": "15",
                    "legendshadow": "0",
                    "legendborderalpha": "0",
                    "palettecolors": "#f8bd19,#008ee4,#33bdda,#e44a00,#6baa01,#583e78",
                    "showplotborder": "0",
                    "showborder": "0"
                },
                "categories": [
                    {
                        "category": [
                            {
                                "label": "7"
                            },
                            {
                                "label": "8"
                            },
                            {
                                "label": "9"
                            },
                            {
                                "label": "10"
                            },
                            {
                                "label": "11"
                            },
                            {
                                "label": "12"
                            },
                            {
                                "label": "13"
                            }
                        ]
                    }
                ],
                "dataset": [
                    {
                        "seriesname": "Input",
                        "data": [
                            {
                                "value": "22314"
                            },
                            {
                                "value": "36395"
                            },
                            {
                                "value": "32661"
                            },
                            {
                                "value": "34895"
                            },
                            {
                                "value": "30300"
                            },
                            {
                                "value": "31011"
                            },
                            {
                                "value": "16363"
                            }
                        ]
                    },
                    {
                        "seriesname": "Output",
                        "data": [
                            {
                                "value": "18537"
                            },
                            {
                                "value": "29931"
                            },
                            {
                                "value": "28518"
                            },
                            {
                                "value": "29793"
                            },
                            {
                                "value": "26538"
                            },
                            {
                                "value": "26898"
                            },
                            {
                                "value": "13716"
                            }
                        ]
                    },
                    {
                        "seriesname": "InTarget",
                        "renderas": "Line",
                        "data": [
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            },
                            {
                                "value": "6500"
                            }
                        ]
                    },
                    {
                        "seriesname": "OutTarget",
                        "renderas": "Line",
                        "data": [
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            },
                            {
                                "value": "4875"
                            }
                        ]
                    }
                ]
            }
我想做的是:

  • 将存储过程转换为数据表
  • 将每列放入单独的数组中
  • 按以下格式将数组转换为Json
这将是最好的(性能)方法吗

编辑:

        public Series[] GetGraphData(string sp)
    {
        var connection = ConfigurationManager.ConnectionStrings["EFDbContext"].ConnectionString;
        using (var da = new SqlDataAdapter("exec " + sp, connection))
        {
            var dt = new DataTable();

            da.Fill(dt);
            da.FillSchema(dt, SchemaType.Mapped);


            Series[] arrSeries = new Series[dt.Columns.Count];


            foreach(DataColumn dc in dt.Columns)
            {
                if (dc.Ordinal == 0)
                {
                  //Category here
                }
                else
                {
                    var strarr = dt.Rows.Cast<DataRow>().Select(row => row[dc.Ordinal]).ToList();

                    Series s = new Series()
                    {
                        seriesname = dc.ColumnName,
                        renderas = "Line",
                        data = strarr.Select(o => new SeriesValue { value = o.ToString() }).ToList()
                    };

                    arrSeries[dc.Ordinal] = s;
                }
            }

            return arrSeries;
        }
    }
公共系列[]GetGraphData(字符串sp) { var connection=ConfigurationManager.ConnectionString[“EFDbContext”].ConnectionString; 使用(var da=new-SqlDataAdapter(“exec”+sp,连接)) { var dt=新数据表(); da.填充(dt); FillSchema(dt,SchemaType.Mapped); Series[]arrSeries=新系列[dt.Columns.Count]; foreach(数据列dc在dt.列中) { if(dc.Ordinal==0) { //分类在这里 } 其他的 { var strarr=dt.Rows.Cast().Select(row=>row[dc.Ordinal]).ToList(); 系列s=新系列() { seriesname=dc.ColumnName, renderas=“Line”, data=strarr.Select(o=>newseriesvalue{value=o.ToString()}).ToList() }; arr级数[dc.序数]=s; } } 返回序列; } }
如您所说,我会将所有数据加载到datatable中,然后创建一个Series对象:

class Series{
  public string seriesname{get;set;}
  public string renderas{get;set;}
  public IList<SeriesValue> data{get;set;}
}

class SeriesValue{
  public string value{get;set;}
}
类系列{
公共字符串序列名{get;set;}
公共字符串renderas{get;set;}
公共IList数据{get;set;}
}
类序列值{
公共字符串值{get;set;}
}
并将序列数组返回到前端,序列化为JSON。然后您就已经构建了
数据集
数组,不需要对其进行任何其他处理


我认为性能瓶颈在于从数据库加载数据并将其发送到客户端。。实际转换为json在总体方案中并不重要。

谢谢你的回答,你能看看我的代码(我编辑的问题)吗?如何将列值加载到IList?