在C#中通过groupby组织List对象成为多级别Json数据

在C#中通过groupby组织List对象成为多级别Json数据

也可以说,把一个表的结果集,转换为类似主子表的结果集然后生成Json

例如,一个表或者一个数据库操作返回的结果集:

IDNameGenresth.
1The BeatlesRock☆☆☆
2The Rolling StonesRock☆☆☆
3Miles DaviesJazz☆☆☆
4Stan GetzJazz☆☆☆

想要转化为:

{
	"Data": [
		{
			"Genre": "Rock",
			"Musicians": [
				{
					"Name": "The Beatles",
					"sth.": "",
					"ID": 1
				},
				{
					"Name": "The Rolling Stones",
					"sth.": "",
					"ID": 2
				}
			]
		},
		{
			"Genre": "Jazz",
			"Musicians": [
				{
					"Name": "Miles Davies",
					"sth.": "",
					"ID": 33
				},
				{
					"Name": "Stan Getz",
					"sth.": "",
					"ID": 4
				}
			]
		}
	]
}

则可以使用List的LINQ完成,类似var v = list..GroupBy(g1 => new { g1.DEPTNAME, g1.DEPT_ID, g1.CLINICNAME }).Select(s1 => new { s1.Key.DEPTNAME, s1.Key.DEPT_ID, s1.Key.CLINICNAME, SCHEDULES = s1.GroupBy(g2 => g2.SCHEDULEDATE).Select(s2 => new { SCHEDULEDATE = Convert.ToDateTime(s2.Key).ToString("yyyy-MM-dd"), REGISTRATIONRESOURCES = s2.GroupBy(g3 => g3.DR_ID).Select(s3 => new { REGISTRATIONTYPE = s3.Select(e1 => e1.REGISTRATIONTYPE).First(), DOCTORID = s3.Select(e1 => e1.DR_ID).First(), DOCTORNAME = s3.Select(e1 => e1.DOCTORNAME).First(), PERIOD = s3.Select(e1 => e1.PERIOD).First(), FREENUMBER = s3.Select(e1 => e1.TOTALNUMBER).First(), PIPELINE = s3.Select(e1 => e1.PIPELINE).First() }).OrderBy(o1 => new { o1.DOCTORID, o1.REGISTRATIONTYPE }) }).OrderBy(o2 => o2.SCHEDULEDATE) }).First();

v.ToJson……

注:

select:组成新对象。

* 可以调用groupby的key值(如果是一个就直接用,如果是多个,就要key.someField)

* 可以调用排序后的list中的内容,通过first来取第一条值。不用first的话,在json中值是一个数组类似于"key":[{"value":1}],加first的话,可以返回"key":1

groupby:可以by一个字段,key直接调用,可以by一个new的对象,多个字段。

sort:排序

first:可以用于控制json中格式的细节。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#使用JSON数据和echarts结合可以分为两个部分,分别是数据处理和图表显示。 首先,你可以使用C#的Newtonsoft.Json库来处理JSON数据。该库提供了丰富的API,可以方便地将JSON数据转换为C#对象。例如,你可以使用JsonConvert.DeserializeObject()方法将JSON字符串转换为对象,或者使用JsonConvert.SerializeObject()方法将对象序列化为JSON字符串。 接下来,你可以将处理好的数据传递给前端页面,使用JavaScript的echarts库来展示数据。在前端页面,你可以使用ajax请求获取C#处理好的JSON数据,然后使用echarts提供的API来渲染图表。例如,你可以使用echarts的option配置项来设置图表类型、数据和样式等。 下面是一个简单的示例代码,演示了如何在C#处理JSON数据,并在前端页面使用echarts展示数据: 1. C#代码: ``` using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace EChartsDemo.Controllers { public class HomeController : Controller { public ActionResult Index() { // 模拟数据 List<DataItem> data = new List<DataItem>(); data.Add(new DataItem("类别A", 10)); data.Add(new DataItem("类别B", 20)); data.Add(new DataItem("类别C", 30)); // 将数据转换为JSON字符串 string jsonData = JsonConvert.SerializeObject(data); // 将JSON数据传递给前端页面 ViewBag.JsonData = jsonData; return View(); } } // 数据模型 public class DataItem { public string Name { get; set; } public int Value { get; set; } public DataItem(string name, int value) { this.Name = name; this.Value = value; } } } ``` 2. 前端页面代码: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts Demo</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.7.0/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 获取C#传递的JSON数据 var jsonData = '@Html.Raw(ViewBag.JsonData)'; // 将JSON字符串解析为JavaScript对象 var data = JSON.parse(jsonData); // 创建图表 var chart = echarts.init(document.getElementById('chart')); var option = { title: { text: '柱状图' }, tooltip: {}, xAxis: { data: data.map(function (item) { return item.Name; }) }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: data.map(function (item) { return item.Value; }) }] }; chart.setOption(option); </script> </body> </html> ``` 希望这个示例能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值