.NET 9 Preview 1中的两个功能
Json缩进
增加了Json输出时的缩进控制,代码如下:
using System.Text.Json; var options = new JsonSerializerOptions { //启用缩进 WriteIndented = true, //缩进字符 IndentCharacter = ' ', //缩进大小 IndentSize = 6, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, }; string json = JsonSerializer.Serialize( new { Name = "张三",Age=20,Sex="男" }, options ); Console.WriteLine(json);
需要注意支持的缩进字符只有空格和水平制表符(tab键),其他字符会报错。下面是输出结果。
{ "Name": "张三", "Age": 20, "Sex": "男" }
JsonSerializerOptions原来提供了一个JsonSerializerOptions.Defalut的配置同时提供了一个,现在又加了一个JsonSerializerOptions.Web,默认为驼峰命名策略。
var webJson = JsonSerializer.Serialize( new { UserName = "gsw", Password="123456" }, JsonSerializerOptions.Web // Defaults to camelCase naming policy. ); Console.WriteLine(webJson);
结果:
{"userName":"gsw","password":"123456"}
Linq扩展方法CountBy和AggregateBy
CountBy,把key相同的进行相加,返回一个KeyValue集合。MaxBy和MinBy获取整个集合中最多和最少的KeyValue,如果有相同的,取第一个。
var sourceText = """ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices amet diam. """; Console.WriteLine(sourceText); var KVs = sourceText .Split(new char[] { ' ', '.', ',','\r','\n' }, StringSplitOptions.RemoveEmptyEntries) .Select(word => word.ToLowerInvariant()) .CountBy(word => word); foreach (var item in KVs) { Console.WriteLine(item.Key + ":" + item.Value); } Console.WriteLine("-------------------------"); var mostFrequentWord = KVs.MaxBy(pair => pair.Value); Console.WriteLine(mostFrequentWord.Key + ":" + mostFrequentWord.Value); Console.WriteLine("-------------------------"); mostFrequentWord = KVs.MinBy(pair => pair.Value); Console.WriteLine(mostFrequentWord.Key + ":" + mostFrequentWord.Value);
运行结果:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices amet diam. lorem:1 ipsum:1 dolor:2 sit:2 amet:3 consectetur:1 adipiscing:2 elit:1 sed:2 non:1 risus:1 suspendisse:1 lectus:1 tortor:1 dignissim:1 nec:1 ultricies:1 cras:1 elementum:1 ultrices:1 diam:1 ------------------------- amet:3 ------------------------- lorem:1
AggregateBy是对KeyValue集合进行求和计算。
var orders = new Order[] { new Order("zs", 1,DateTime.Now), new Order("ls", 2,DateTime.Now), new Order("ww", 3,DateTime.Now), new Order("zs", 4,DateTime.Now), new Order("ls", 5,DateTime.Now), new Order("ww", 6,DateTime.Now), }; var kvs = orders.AggregateBy( keySelector: word => word.OrderUser, seed: 0m, (orderAmount, order) => orderAmount + order.OrderAmount ); foreach (var item in kvs) { Console.WriteLine(item.Key + ":" + item.Value); } record Order(string OrderUser, decimal OrderAmount, DateTime OrderTime);
运行结果:
zs:5 ls:7 ww:9
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2009-02-22 页面中动态画有超连接的图
2008-02-22 .net知识和学习方法系列(八)static