对于Highcharts折线图,从SQL、C#with Linq到JSON的数据转换
我希望将下面的SQL结果转换为Highcharts折线图的JSON列表。我用的是C#。我不知道如何创建一个合适的类,并用所需格式的数据填充它们对于Highcharts折线图,从SQL、C#with Linq到JSON的数据转换,c#,json,highcharts,C#,Json,Highcharts,我希望将下面的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
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]
}
}]
类程序
{
静态void Main(字符串[]参数)
{
var ro=新的RootObject();
ro.AddRow(1,“名称1”,2015年10月4日);
ro.AddRow(1,“名称1”,2015年11月5日);
ro.AddRow(1,“名称1”,2015年12月6日);
ro.AddRow(2,“名称2”,2015年10月6日);
ro.AddRow(2,“名称2”,2015年11月7日);
ro.AddRow(2,“名称2”,2015年12月8日);
ro.AddRow(3,“名称3”,2015年10月35日);
ro.AddRow(3,“名称3”,2015年11月7日);
ro.AddRow(3,“名称3”,2015年12月8日);
字符串输出=JsonConvert.SerializeObject(ro);
控制台写入线(输出);
//输出:
//{
//“类别”:[10,11,12],
//“系列”:[
//{“名称”:“名称1”,“数据”:[4,5,6]},
//{“名称”:“名称2”,“数据”:[6,7,8]},
//{“名称”:“名称3”,“数据”:[35,7,8]}]
//}
Console.ReadKey();
}
公共类根对象
{
公共根对象()
{
类别=新列表();
系列=新列表();
}
public void AddRow(整数id、字符串名称、整数年、整数月、整数数据)
{
如果(!categories.Contains(月))
{
类别。添加(月);
}
var serie=series.FirstOrDefault(x=>x.name==name);
if(serie==null)
{
系列=新系列(名称);
系列。添加(系列);
}
系列数据添加(数据);
}
公共列表类别{get;set;}
公共列表系列{get;set;}
}
公开课系列
{
公共系列(字符串_名称)
{
名称=_名称;
数据=新列表();
}
公共字符串名称{get;set;}
公共列表数据{get;set;}
}
}
课程计划
{
静态void Main(字符串[]参数)
{
var ro=新的RootObject();
ro.AddRow(1,“名称1”,2015年10月4日);
ro.AddRow(1,“名称1”,2015年11月5日);
ro.AddRow(1,“名称1”,2015年12月6日);
ro.AddRow(2,“名称2”,2015年10月6日);
ro.AddRow(2,“名称2”,2015年11月7日);
ro.AddRow(2,“名称2”,2015年12月8日);
ro.AddRow(3,“名称3”,2015年10月35日);
ro.AddRow(3,“名称3”,2015年11月7日);
ro.AddRow(3,“名称3”,2015年12月8日);
字符串输出=JsonConvert.SerializeObject(ro);
控制台写入线(输出);
//输出:
//{
//“类别”:[10,11,12],
//“系列”:[
//{“名称”:“名称1”,“数据”:[4,5,6]},
//{“名称”:“名称2”,“数据”:[6,7,8]},
//{“名称”:“名称3”,“数据”:[35,7,8]}]
//}
Console.ReadKey();
}
公共类根对象
{
公共根对象()
{
类别=新列表();
系列=新列表();
}
public void AddRow(整数id、字符串名称、整数年、整数月、整数数据)
{
如果(!categories.Contains(月))
{
类别。添加(月);
}
var serie=series.FirstOrDefault(x=>x.name==name);
if(serie==null)
{
系列=新系列(名称);
系列。添加(系列);
}
系列数据添加(数据);
}
公共列表类别{get;set;}
公共列表系列{get;set;}
}
公开课系列
{
公共系列(字符串_名称)
{
名称=_名称;
数据=新列表();
}
公共字符串名称{get;set;}
公共列表数据{get;set;}
}
}
然后如何将数据添加到类中?我编辑了答案,并提供了完整的工作示例。将代码粘贴到控制台应用程序中,并使用nuget安装Newtonsoft.Json。(安装软件包Newtonsoft.Json)或Json序列化程序。这回答了您的问题吗?这真的很有帮助,我以前没有考虑过,所以我应该能够在其他方面实现这一点。然后如何将数据添加到类中?我编辑了答案,并提供了一个完整的工作示例。将代码粘贴到控制台应用程序中,并使用nuget安装Newtonsoft.Json。(选择安装包Newtonsoft.Json)或Json序列化程序。这回答了您的问题吗?这非常有用,我以前没有考虑过这一点,所以我应该能够在其他方面实现这一点。
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; }
}
}