今天在学习研究 .net core 与 mysql 数据库之间的时候,遇到 select 查询出来的数据,要如何与程序中的数据模型对应,而且这自定义的模型如何组成一个 array list ,然后最后又怎么将这个 array list 转换成 webapi 友好的 json 格式返回,以前在 php、typeScript 或 java 都可以利用语言自带的函数或方法顺利的解决上述的问题。但到了 .net core 就摸不着头脑了,网上的方法都是基本上都写一大堆手动拼接代码的处理函数来解决,感觉实在是不方便,难道强大的 C# 没有自己简单处理这个问题的方法了吗?
不过找来找去较为简单处理这个问题的方法,就暂时先用着吧。
先来个简单处理这个例子的实例
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using MySql.Data.MySqlClient; using System.Collections; using Microsoft.AspNetCore.Server.Kestrel.Internal.System.Collections.Sequences; using System.Runtime.Serialization.Json; using System.IO; using System.Text; namespace NetCode.Controllers { [Route("api/[controller]")] public class ValuesController : Controller { [HttpPost] public dynamic Post([FromBody]JObject value) { List<UserModel> um = new List<UserModel>(); Random random = new Random(); for (var i = 0; i < 10; i++) { UserModel item = new UserModel(); item.id = i; item.name = "name" + i; item.age = random.Next(10, 99); item.createTime = DateTime.Now; um.Add(item); } DataContractJsonSerializer json = new DataContractJsonSerializer(um.GetType()); string szJson = ""; //序列化 using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, um); szJson = Encoding.UTF8.GetString(stream.ToArray()); } return szJson; } } public class UserModel { public int id { get; set; } public string name { get; set; } public int age { get; set; } public dynamic createTime { get; set; } } }
看了上面的代码感觉有点不太爽。看中间的数据动态添加的代码:
for (var i = 0; i < 10; i++) { UserModel item = new UserModel(); item.id = i; item.name = "name" + i; item.age = random.Next(10, 99); item.createTime = DateTime.Now; um.Add(item); }
这里能不能再简洁点,用一句话就能搞定。答案是当然可以了。
for (var i = 0; i < 10; i++) { um.Add(new UserModel() { id = i, name = "name" + i, age = random.Next(10, 99), createTime = DateTime.Now }); }
不过这种写法博主感觉还是没有前面学习过的 typeScript 语言的写法简洁,也可能是 C# 的特性吧(也有可能存在着更简洁的,没有被博主发现而已,以后发现了再补)。
前面写过了自定义模型最基本的数组列组合方法后,现在是进入升级篇那就是结合数据库搜索列表来实践,这也是必经之路。
那么具体怎么做可以看最近练习的【mysql的使用】这篇文章的内容