Класс:Преобразование DataTable в JSON на основе определенных правил
public class DataCls
{
public int Year { get; set; }
public string Month { get; set; }
public int MonthOrder { get; set; }
public string category { get; set; }
public int Val { get; set; }
}
данных:
List<DataCls> dlist = new List<DataCls>();
DataCls dat = new DataCls();
dat.Year = 2015;
dat.Month = "Jan";
dat.MonthOrder = 1;
dat.category = "A";
dat.Val = 1;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2015;
dat.Month = "Jan";
dat.MonthOrder = 1;
dat.category = "B";
dat.Val = 2;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2015;
dat.Month = "Jan";
dat.MonthOrder = 1;
dat.category = "C";
dat.Val = 3;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2015;
dat.Month = "Feb";
dat.MonthOrder = 2;
dat.category = "A";
dat.Val = 5;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2015;
dat.Month = "Feb";
dat.MonthOrder = 2;
dat.category = "B";
dat.Val = 6;
dlist.Add(dat);
dat.Year = 2016;
dat.Month = "Jan";
dat.MonthOrder = 1;
dat.category = "A";
dat.Val = 4;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2016;
dat.Month = "Feb";
dat.MonthOrder = 2;
dat.category = "A";
dat.Val = 7;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2016;
dat.Month = "Feb";
dat.MonthOrder = 2;
dat.category = "B";
dat.Val = 8;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2016;
dat.Month = "Feb";
dat.MonthOrder = 2;
dat.category = "C";
dat.Val = 9;
dlist.Add(dat);
dat = new DataCls();
dat.Year = 2015;
dat.Month = "Mar";
dat.MonthOrder = 3;
dat.category = "A";
dat.Val = 10;
dlist.Add(dat);
выход я ожидал.
{
"Series": [{
"name": "A",
"stack": 2015,
"data": [1, 5, 10]
}, {
"name": "B",
"stack": 2015,
"data": [2, 6, null]
}, {
"name": "C",
"stack": 2015,
"data": [3, null, null]
}, {
"name": "A",
"stack": 2016,
"data": [4, 7, null]
}, {
"name": "B",
"stack": 2016,
"data": [null,8, null]
}, {
"name": "C",
"stack": 2016,
"data": [null,9, null]
}]
}
точек помнить:
Year
недвижимости будет присвоенаstack
собственности в объекте JSon.Category
Недвижимость будет принадлежать объектуname
в объекте json.- Число
Category
не фиксировано. - Данные
Category
могут быть представлены или могут отсутствовать в течение данного месяца. - Объект
data
будет размещен в объекте json для каждого месяца. - Если категория отсутствует в течение месяца, мы должны считать значение нулевым.
Я действительно не уверен, как решить эту проблему. Как я могу приступить к решению этой проблемы. У меня с трудом фиксируется это.
Должно ли это быть DataTable? Может у вас есть IDataReader? –
@MattClark. Да, я могу использовать DataReader. Первоначально я думал, что буду использовать LINQ поверх DataTable, и было бы легко запросить datatable – OpenStack