我希望将以下SQL结果转换为Highcharts折线图的JSON列表。我正在使用 C#。我无法弄清楚如何创建一个适当的类并以所需的格式用这些数据填充它们。
ID Name Month Year Data
2 Name 1 10 2015 4
2 Name 1 11 2015 5
2 Name 1 12 2015 6
3 Name 2 10 2015 6
3 Name 2 11 2015 7
3 Name 2 12 2015 8
4 Name 3 10 2015 35
4 Name 3 11 2015 7
4 Name 3 12 2015 8
最终结果需要采用类似这种格式。ID和年份也需要通过,但用于不同的事情。这能做到吗?
categories: ['10', '11', '12'],....
series: [{
name: 'Name 1',
data: [4, 5, 6]
}, {
name: 'Name 2',
data: [6, 7, 8]
}, {
name: 'Name 3',
data: [35, 7, 8]
}
}]
class Program
{
static void Main(string[] args)
{
var ro = new RootObject();
ro.AddRow(1, "Name1", 2015, 10, 4);
ro.AddRow(1, "Name1", 2015, 11, 5);
ro.AddRow(1, "Name1", 2015, 12, 6);
ro.AddRow(2, "Name2", 2015, 10, 6);
ro.AddRow(2, "Name2", 2015, 11, 7);
ro.AddRow(2, "Name2", 2015, 12, 8);
ro.AddRow(3, "Name3", 2015, 10, 35);
ro.AddRow(3, "Name3", 2015, 11, 7);
ro.AddRow(3, "Name3", 2015, 12, 8);
string output = JsonConvert.SerializeObject(ro);
Console.WriteLine(output);
//Output:
//{
// "categories":[10,11,12],
// "series":[
// {"name":"Name1","data":[4,5,6]},
// {"name":"Name2","data":[6,7,8]},
// {"name":"Name3","data":[35,7,8]}]
//}
Console.ReadKey();
}
public class RootObject
{
public RootObject()
{
categories = new List<int>();
series = new List<Series>();
}
public void AddRow(int id, string name, int year, int month, int data)
{
if (!categories.Contains(month))
{
categories.Add(month);
}
var serie = series.FirstOrDefault(x => x.name == name);
if (serie == null)
{
serie = new Series(name);
series.Add(serie);
}
serie.data.Add(data);
}
public List<int> categories { get; set; }
public List<Series> series { get; set; }
}
public class Series
{
public Series(string _name)
{
name = _name;
data = new List<int>();
}
public string name { get; set; }
public List<int> data { get; set; }
}
}