如何将多种数据类型添加到列表中

时间:2013-12-10 09:30:40

标签: c# json list highcharts

我的列表如下,

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

在包含浮点值的另一个列表中的上述代码数据中,我希望数据包含两个不同的数据类型值,即string和float值,当我尝试添加两个不同的数据类型值时,如下所示,

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

它给我一个错误  Using the generic type'System.Collections.Generic.List<T>' requires 1 argument.

我无法尝试data=new List<Tupple<string,float>>(); ..因为我使用的是.NET 3.5 ...任何想法..我知道我处理这个问题..谢谢你,

----------更新了问题---------

我要求的输出如下,

 {
 "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],["Actual-Gross Margin %",10.00]]}
  ]
  },

这个数据列表应该包含一个字符串值和一个浮点值...我想在highcharts中绘制饼图,但我得到的输出如下,

{
"legend":{"enabled":"true"},
"title":{"text":"Financial"},
"chart":{"type":"column"},
"series":[{"name":"Actual","data":[{"Str":"Market Share","Flo":20.00}]},
          {"name":"Actual","data":[{"Str":"Sales Growth","Flo":30.00}]},
          {"name":"Actual","data":[{"Str":"Operating Profit","Flo":40.00}]},
          {"name":"Actual","data":[{"Str":"Gross Margin %","Flo":10.00}]}
         ]
}

任何想法...... ???

----------使用词典----------

var data = new Dictionary<string, float?>();
var serie_line = new { name = series_name, data };
serie_line.data.Add(child_object_name, period_final_value);

但这并不能提供所需的输出...... 它只给出数据内部的值,例如,      “数据”:[“市场份额”:20.00] ..因为我将serie_line序列化为JSON ......但我不想这样......我想要的是“数据”:[“市场份额”,20.00]

我希望你能得到这个......

5 个答案:

答案 0 :(得分:3)

只需使用

 new Dictionary<string, float?>() //if your string value cannot be duplicated  

//或

  new  List<KeyValuePair<string,float?> > 

答案 1 :(得分:3)

创建一个与列表一起使用的类型:

public class MyDataType
{
  public string Str {get; set;}
  public float? Flo {get;set;}
}

你这样使用它:

var serie_line = new { name = series_name , data =new List<MyDataType>() };
serie_line.data.Add(new MyDataType{Flo = 45.4});

或者喜欢:

var serie_line = new { name = series_name , data =new List<MyDataType>() };
serie_line.data.Add(new MyDataType{Flo = 45.4, Str = "my string"});

答案 2 :(得分:1)

如果您尝试将项目添加到列表中以便两者都可用,则需要使用List<object>(),因为它是两者之间唯一的共享类型。那或者使用ArrayList。

当您拉出对象时,您需要测试它们是stringfloat?类型的对象,以便将它们强制转换。你可以包装它们。

答案 3 :(得分:0)

使用ArrayList,非通用版本的List。

答案 4 :(得分:0)

如何更有条理的事情:

public struct MyData
{
    public float? FloatData;
    public string StringData;
}

var serie_line = new
                 {
                     name = series_name,
                     data = new MyData()
                            {
                                FloatData = theFloatData,
                                StringData = theStringData,
                            }
                 };