最快的方法是什么?

What would be the fastest method?

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

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"
                            }
                        ]
                    }
                ]
            }

我想做的是:

这是最好的(性能)方法吗?

编辑:

        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;
        }
    }

我会像你说的那样将所有数据加载到一个数据表中,然后有一个 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;}
}

和return一个Series数组到前端,序列化为JSON。那么你已经构建了 dataset 数组,你不需要对其进行任何其他处理。

我预计性能瓶颈在于从数据库加载数据并将其发送到客户端。实际转换为 json 在总体方案中应该无关紧要。