数据库查回来的数据ID       model        date           testdata
1          model1     2018-1        1.21
2         model1     2018-2        1.22
3          model1    2018-3       1.23
4          model1    2018-4       1.24
5           model1    2018-5        1.25
6          model2     2018-1         2.1
7          model2     2018-2         2.2
8            model2    2018-3        2.3
9          model2     2018-4        2.4
10        model2     2018-5        2.5组成
{
model:model1
data :[2018-1,2018-2,2018-3,2018-4,2018-5]
testdata:[1.21,1.22,1.23,1.24,1.25]
},
{
model:model2
data :[2018-1,2018-2,2018-3,2018-4,2018-5]
testdata:[2.1,2.2,2.3,2.4,2.5]
}
这种结构的!

解决方案 »

  1.   

    先获取数据组成需要格式的对象,再序列化成json就可以啦
      

  2.   

    Try:  Json.NET 
      

  3.   

    后台:
    public class SingleModel
        {
            public string model { get; set; }
            public string[] data { get; set; }
            public float[] testdata { get; set; }
        }
    结果转化为一个 List<SingleModel> , 再用 Newtonsoft.Json 转 json 就是了。
      

  4.   

    https://www.cnblogs.com/08shiyan/p/3464028.html
      

  5.   


    tablejson[{"id":0,"model":"model0","date":"2018-10","testdata":1.6},{"id":1,"model":"model1","date":"2018-1","testdata":8.9},{"id":2,"model":"model1","date":"2018-5","testdata":2.0},{"id":3,"model":"model1","date":"2018-3","testdata":8.9},{"id":4,"model":"model0","date":"2018-7","testdata":9.6},{"id":5,"model":"model1","date":"2018-0","testdata":9.9},{"id":6,"model":"model1","date":"2018-7","testdata":5.3},{"id":7,"model":"model0","date":"2018-4","testdata":6.4},{"id":8,"model":"model1","date":"2018-5","testdata":7.9},{"id":9,"model":"model0","date":"2018-3","testdata":2.9},{"id":10,"model":"model1","date":"2018-5","testdata":5.7},{"id":11,"model":"model0","date":"2018-1","testdata":7.6},{"id":12,"model":"model0","date":"2018-3","testdata":0.9},{"id":13,"model":"model1","date":"2018-1","testdata":4.1},{"id":14,"model":"model0","date":"2018-2","testdata":2.4},{"id":15,"model":"model0","date":"2018-5","testdata":8.5},{"id":16,"model":"model1","date":"2018-6","testdata":1.1},{"id":17,"model":"model0","date":"2018-8","testdata":7.2},{"id":18,"model":"model0","date":"2018-1","testdata":4.7},{"id":19,"model":"model1","date":"2018-1","testdata":6.6}]序列化json
    [
    {"model":"model0","date":["2018-10","2018-7","2018-4","2018-3","2018-1","2018-3","2018-2","2018-5","2018-8","2018-1"],"testdata":[1.6,9.6,6.4,2.9,7.6,0.9,2.4,8.5,7.2,4.7]},
    {"model":"model1","date":["2018-1","2018-5","2018-3","2018-0","2018-7","2018-5","2018-5","2018-1","2018-6","2018-1"],"testdata":[8.9,2.0,8.9,9.9,5.3,7.9,5.7,4.1,1.1,6.6]}
    ]
    源代码
                    System.Data.DataTable table = new System.Data.DataTable();
                    table.Columns.Add("id", typeof(int));
                    table.Columns.Add("model", typeof(string));
                    table.Columns.Add("date", typeof(string));
                    table.Columns.Add("testdata", typeof(decimal));
                    Random random = new Random(DateTime.Now.Millisecond);                for (int i = 0; i < 20; i++)
                    {
                        System.Data.DataRow row = table.NewRow();
                        row["id"] = i;
                        row["model"] = "model" + random.Next(2);
                        row["date"] = "2018-" + random.Next(12);
                        row["testdata"] = (decimal)random.Next(100) / (decimal)10;
                        table.Rows.Add(row);
                    }                var linqrow = table.Rows.Cast<System.Data.DataRow>()
                    .Select(r => new { model = r["model"] , date=r["date"] , testdata=r["testdata"] })
                    .GroupBy(g=>g.model)
                    .Select(gr=> new { model=gr.Key , date=gr.Select( rr=>rr.date ).ToList(), testdata = gr.Select(rr => rr.testdata).ToList() }  );                string jsontable = Newtonsoft.Json.JsonConvert.SerializeObject(table);
                    string jsonlst = Newtonsoft.Json.JsonConvert.SerializeObject(linqrow);
    用了随机数,你的结果和我的可能有差距
      

  6.   

    主要语句是这一句var linqrow = table.Rows.Cast<System.Data.DataRow>()
    .Select(r => new { model = r["model"] , date=r["date"] , testdata=r["testdata"] })
    .GroupBy(g=>g.model)
    .Select(gr=> new { model=gr.Key , date=gr.Select( rr=>rr.date ).ToList(), testdata = gr.Select(rr => rr.testdata).ToList() } );我嚼碎了给你说
    var linqrow = table.Rows.Cast<System.Data.DataRow>()
    把datatable转成可查询的datarow array.Select(r => new { model = r["model"] , date=r["date"] , testdata=r["testdata"] })
    把datarow对象转成匿名的有三个属性 model、date、testdate 的对象.GroupBy(g=>g.model)
    groupby model我就不用多解释了把.Select(gr=> new { model=gr.Key , date=gr.Select( rr=>rr.date ).ToList(), testdata = gr.Select(rr => rr.testdata).ToList() } );
    把groupby后的效果转成 model为key,date为集合中date 的list ,testdata为集合中testdata的list 的新对象。最后的json序列化你引入nuget包就能实现。
      

  7.   


                    var linqrow = table.Rows.Cast<System.Data.DataRow>()
                    .Select(r => new { model = r["model"] , date=r["date"] , testdata=r["testdata"] })
                    .GroupBy(g=>g.model)
                    .Select(gr=> new { model=gr.Key , date=gr.OrderBy(rr=>rr.date).Select( rr=>rr.date ).ToList(), testdata = gr.OrderBy(rr => rr.date).Select(rr => rr.testdata).ToList() }  );
    对了一下数据发现少了排序数据可能乱序。加上了排序。