2013-12-10 3 views
1

У меня есть свой список, как показано ниже,Как добавить несколько типов данных в список

var serie_line = new { name = series_name , data =new List<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 ... любая идея..hw cn Я занимаюсь этой проблемой. Спасибо,

---------- Обновленный вопрос ---------

Вывод, который я требует таков,

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

этот список данных должна содержать одно значение строки и одно значение с плавающей точкой ... Я хочу, чтобы нарисовать круговую диаграмму в высокие показатели, но выход я получаю следующим образом:

{ 
"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

Вы хотите, чтобы список объектов или вам нужен список кортежей (или их эквивалент)? т. е. являются вашими строками и плавает одно к одному, или это просто, что у вас может быть что-то вроде '{1,2,3," four "}' в вашем списке? – Chris

+0

@chries ... Я хочу, чтобы мой список данных выдавал результат как {"string", 1} – Reshma

+0

Итак, у вас будет только два элемента в списке? Если да, то почему список? – Chris

ответ

3

просто использовать

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

// или

new List<KeyValuePair<string,float?> > 
+2

Из исходного вопроса: «Я не могу попробовать для' data = new List >(); '" – Chris

+2

Я обновил свой ответ. Keyvaluepair поддерживается в .net 3.5 –

+0

, когда я использую словарь. . Я получаю вывод как ниже «series»: [{«name»: «Actual», «data»: [{«Str»: «Доля на рынке», «Flo»: 22.37}]}] ... этот формат У меня есть, потому что я serailaize моей переменной в формате JSON, так как моя главная цель - рисовать круговую диаграмму в highcharts bt. Я не хочу этого вывода ... пожалуйста, c моим обновленным вопросом ... – Reshma

1

Если вы пытаетесь добавить элементы в список, так что оба доступны вам нужно использовать List<object>(), в качестве единственного разделяемого типа между обоими. Это или использовать ArrayList.

Как вы вытаскиваете объекты, вам нужно будет проверить, являются ли они объектами типа string или float?, чтобы отбросить их. Вы можете их обернуть.

2

создать тип будет использовать со списком:

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"}); 
0

Как о чем-то более структурированным:

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

var serie_line = new 
       { 
        name = series_name, 
        data = new MyData() 
          { 
           FloatData = theFloatData, 
           StringData = theStringData, 
          } 
       }; 
Смежные вопросы