C# 创建包含多个列表的列表的步骤

C# 创建包含多个列表的列表的步骤,c#,json,list,.net-3.5,highcharts,C#,Json,List,.net 3.5,Highcharts,下面是我的主要清单 var serie_line = new { name = series_name, data = new List<object>() }; 然后我将这个var serie_行添加到另一个列表系列中,如下所示 serie_line.data.Add(child_object_name); serie_line.data.Add(period_final_value ); List<object> series = new List<obj

下面是我的主要清单

var serie_line = new { name = series_name, data = new List<object>() };
然后我将这个var serie_行添加到另一个列表系列中,如下所示

serie_line.data.Add(child_object_name); 
serie_line.data.Add(period_final_value );
List<object> series = new List<object>(); 
series.Add(serie_line);
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":["Market Share",20.00]},
               {"name":"Actual","data":["Sales Growth",30.00]},
               {"name":"Actual","data":["Operating Profit",40.00]},
               {"name":"Actual","data":["Gross Margin %",10.00]}
             ]
  }
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":[["Market Share",20.00],["Sales Growth",30.00],["Operating Profit",40.00],["Gross Margin %",10.00]]}
             ]
  }
鉴于

System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
现在我得到的输出如下:

serie_line.data.Add(child_object_name); 
serie_line.data.Add(period_final_value );
List<object> series = new List<object>(); 
series.Add(serie_line);
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":["Market Share",20.00]},
               {"name":"Actual","data":["Sales Growth",30.00]},
               {"name":"Actual","data":["Operating Profit",40.00]},
               {"name":"Actual","data":["Gross Margin %",10.00]}
             ]
  }
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":[["Market Share",20.00],["Sales Growth",30.00],["Operating Profit",40.00],["Gross Margin %",10.00]]}
             ]
  }
但我需要的输出如下:

serie_line.data.Add(child_object_name); 
serie_line.data.Add(period_final_value );
List<object> series = new List<object>(); 
series.Add(serie_line);
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":["Market Share",20.00]},
               {"name":"Actual","data":["Sales Growth",30.00]},
               {"name":"Actual","data":["Operating Profit",40.00]},
               {"name":"Actual","data":["Gross Margin %",10.00]}
             ]
  }
 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":[["Market Share",20.00],["Sales Growth",30.00],["Operating Profit",40.00],["Gross Margin %",10.00]]}
             ]
  }
所以..我可以使用这个JSON输出在highchart中绘制饼图…我尝试了所有的方法,比如使用字典,创建不同的类,然后使用它的对象等等…但是做不出来

下面是我的全部代码…如果我搞乱了任何循环,我不认识它,但任何人可能会注意到它..请检查下面的代码相同

    var serie_line = new { name = series_name, data = new List<object>() };  

    for (int k = 0; k <= read_Series_Splitted_Name.Length; k++)                                 //for loop for passing chart type in series
        {
            for (int i = 0; i < id_series_before_offset.Count; i++)                                 //for loop for counting series ID
            {
                var xmlAttributeCollection = id_series_before_offset[i].Attributes;
                 if (xmlAttributeCollection != null)
                 {
                    var seriesid = xmlAttributeCollection["id"];
                    xmlActions_id[i] = seriesid.Value;
                    resulted_series_id = seriesid.Value;
                    series_name = Client.GetAttributeAsString(sessionId, resulted_series_id, "name", "");
                    new_series_name = series_name;
                            series_Atribute = Client.GetAttributeAsString(sessionId, resulted_series_id, "symbol", "");
                    if (read_Series_Splitted_Name_store == series_Atribute)
                    {
                       serie_line = new { name = series_name, data = new List<object>() };
                     }

                     k++;
                            //  Forloop for PeriodId and It's Value

                    var value = Read_XML_Before_Offset.SelectNodes("//measure.values/series[" + (i + 1) + "]/value");
                    var xmlActions = new string[value.Count];// for periodname
                    var xmlActionsone = new string[value.Count];  // for period value

                    for (int j = 0; j < value.Count; j++)
                    {

                    var xmlAttributeCollection_for_period = value[j].Attributes;
                     if (xmlAttributeCollection_for_period != null)
                    {

                      if (i == 0 && a == 0)
                      {
                          var periodid = xmlAttributeCollection_for_period["periodid"];
                          xmlActions[j] = periodid.Value;
                          period_final_id = periodid.Value;
                          period_name = Client.GetAttributeAsString(sessionId, periodid.Value, "name", "");
                          period_Name.Add(period_name);
                      }

                      try
                      {
                            var action = xmlAttributeCollection_for_period["value"];  //    xmlActionsone[j] = action.Value;
                            period_final_value = float.Parse(action.Value);
                                            // serie_line.data.Add(period_final_value);
                             serie_line.data.Add(child_object_name);
                             serie_line.data.Add(period_final_value );


                       }
                         catch (Exception ex1)
                       {
                             serie_line.data.Add("");
                             serie_line.data.Add( null );
                       }
                     }
                   }
                }
              }         
            }
           series.Add(serie_line);
var serie_line=new{name=series_name,data=new List()};
对于(int k=0;k而言,您的C#代码应该是这样的,所有这些代码都已精简:

var serie_line = new { name = "Actual", data = new List<object>() };
serie_line.data.Add(new List<object>() {"Market Share", 20.0});
serie_line.data.Add(new List<object>() {"Sales Growth", 30.0});
serie_line.data.Add(new List<object>() {"Operting Profit", 40.0});
serie_line.data.Add(new List<object>() {"Gross Margin %", 10.0});
jSearializer.Serialize(serie_line);
我没有遵循代码的底部部分(如何创建
子对象\u名称
期间\u最终值
),但我认为您需要:

    serie_line.data.Add(new List<object>() {child_object_name, period_final_value });

如果我没有错的话,我认为你必须使用字典结构而不是列表来获得所需的结果。不…当我使用字典时…它使用key:value格式…这让我以[“市场份额”:20.00]的形式输出数据在被序列化为JSON之后…这个输出不会在Highchart中给出饼图,它的
child\u object\u name
period\u final\u value
相等吗?为什么不将
name
作为一个单独的构建语句,然后将
name
JSON连接到
数据
JSON,您应该得到
{name:BLAH,data:[…]}
。我这样做了…我在另一个列表中取了名称,在另一个列表中取了数据,然后试图将其连接到一个列表中,但后来我发现..它使名称和数据成为同一对象的不同子对象,这使问题更加严重..当我这样做时,它只给出数据中的最后一个值..请c我下面的输出..{“图例”:{“已启用”:“true”},“title”:{“text”:“Financial”},“chart”:{“type”:“pie”},“serie_line”:{“name”:“Actual”,“data”:[[“毛利%”,19.44]]}}听起来像是在循环内部重新创建
serie_line
。我看到您在代码块的开始处重新创建它,然后在最高级别的循环中重新创建它,`if(read_Series_Splitted__name_store==Series){serie\u line=new{name=series\u name,data=new List()};}`,这可能是问题的根源吗?