我的列表如下,
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]
我希望你能得到这个......
答案 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。
当您拉出对象时,您需要测试它们是string
或float?
类型的对象,以便将它们强制转换。你可以包装它们。
答案 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,
}
};