linq

C#中JSON和对象之间互相转换功能示例

ε祈祈猫儿з 提交于 2020-08-16 03:28:02
本文实例讲述了C#实现JSON和对象之间互相转换功能。分享给大家供大家参考,具体如下: 1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属性,Order表示 解析的顺序,另外Lover是数组列表,表示女朋友个数 Address 表示送货地址,DailyRecord 表示日常记录 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace FunctionTest.Model { [DataContract] public class UserInfo { [DataMember(Order =0)] public string UserName { get; set; } [DataMember(Order = 1)] public int Age { get; set; } [DataMember(Order = 2)] public int Gender { get; set; } [DataMember(Order =3)] public List<string> Lover { get; set; }

.NetCore学习笔记:五、MiniProfiler监控运行效率

本小妞迷上赌 提交于 2020-08-16 01:26:45
MiniProfiler是一个简单且高效的小型分析器,可用于.NET,Ruby,Go和Node.js. MiniProfiler不是将自己附加到每一个方法上,因为这样会有强侵入性而且也不是专注于分析性能问题。 它是一个ADO.NET的分析器,可以分析对于ADO.NET(SQL Server、Oracle等)、LINQ-to-SQL、EF(Code First&EF Core)的原始调用(如生成的sql语句)。 可编程式的分析器,通过在想要分析的步骤上加上step。 MiniProfiler官网:http://miniprofiler.com/ MiniProfiler开源地址:https://github.com/MiniProfiler/dotnet MiniProfiler在.NetCore中使用起来非常的方便,配置简单,下面我们就来看一下怎么配置: 1、在web项目中安装 MiniProfiler.AspNetCore.Mvc 程序包。 2、在Startup.cs的ConfigureServices中配置MiniProfiler,这里主要完成MiniProfiler的自定义配置(如路由,如果没有特殊要求默认即可。)和内部服务在容器中的注入。 1 public void ConfigureServices(IServiceCollection services) 2 { 3

[译文]c# /.Net 技巧: ToDictionary() and ToList()

让人想犯罪 __ 提交于 2020-08-15 10:57:49
前言: 有两个简单好用的LINQ扩展方法 ToDictionary() 和ToList(), 你可能知道或不知道,但是它的的确确可以简化查询转化为集合的任务: 简介: LINQ和延迟执行 据你所认识的LINQ,你可能会不知道这些查询表达式在幕后做了些什么。 让我们说说今天我们示例的目的,我们有一些POCO类(POCO代表传统CLR对象,指的是一个类,它只有非常少的功能,这一概念源自Java POJO)。 1 // just a simple product POCO class. 2 public class Product 3 { 4 public string Name { get ; set ; } 5 public int Id { get ; set ; } 6 public string Category { get ; set ; } 7 } 非常简单的类,对吗? 我不是说程序需要如此简单,只是专注于LINQ本身,而且我们不一定要真正查询。 所以,在我们的程序中我们可以构建一个简单的例子,这些对象的集合的示例如下: 1 var products = new List<Product> 2 { 3 new Product { Name = " CD Player " , Id = 1 , Category = " Electronics " }, 4 new

C# 数据操作系列

对着背影说爱祢 提交于 2020-08-15 10:08:30
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。 1. 初始化 在实际开发中,一般都是先设计好数据表再进行开发,所以很少用到EF Core的数据迁移功能。所以EF Core的初始化,一般也指的是EF Core上下文初始化。 1.1 连接字符串 我们通过前面的文章知道,EF Core在上下文初始化的时候,都需要一个链接字符串。如果在不考虑后续变更或者上下文的复用性,可以直接在自定义Context里重写OnConfiguring方法中定义。 如果需要后续变更,那么就需要在创建自定义EF Core 上下文类的时候,为之添加一个连接字符串的属性或者字段,以方便初始化的时候指定。实例: public class DefaultContext : DbContext { private string Connection { get; set; } = "Data Source=./blogging1.db"; public DefaultContext(string connection) { Connection = connection; } protected override void OnConfiguring

UniRx精讲(一):UniRx简介&定时功能实现

早过忘川 提交于 2020-08-15 01:54:51
1.UniRx 简介 UniRx 是一个 Unity3D 的编程框架。它专注于解决时间上异步的逻辑,使得异步逻辑的实现更加简洁和优雅。 简洁优雅如何体现? 比如,实现一个“只处理第一次鼠标点击事件”这个功能,使用 UniRx 实现如下: Observable.EveryUpdate() .Where(_ => Input.GetMouseButtonUp(0)) .First() .Subscribe(_ => { // do something }); 代码做的事情很简单: 开启一个 Update 的事件监听。 每次 Update 事件被调用时,进行鼠标是否抬起的判断。 如果判断通过,则进行计数,并且只获取第一次点击事件。 订阅/处理事件。 如果在 Unity 中,使用传统的方式实现如上功能,首先要创建一个成员变量来记录点击次数/是否点击过,然后在脚本中创建一个 Update 方法来监听鼠标抬起的事件。 如果在 Update 方法中,除了实现鼠标事件监听这个功能之外,还要实现其他的功能。那么 Update 里就会充斥着大量的状态判断等逻辑。代码非常不容易阅读。 而 UniRx 提供了一种编程思维,使得平时一些比较难以实现的异步逻辑(比如以上这种),使用 UniRx 轻松搞定,并且不失代码的可读性。 当然 UniRx 的强大不仅仅如此。 它还可以: 优雅实现 MVP(MVC

.NetCore学习笔记:五、MiniProfiler监控运行效率

女生的网名这么多〃 提交于 2020-08-14 08:26:56
MiniProfiler是一个简单且高效的小型分析器,可用于.NET,Ruby,Go和Node.js. MiniProfiler不是将自己附加到每一个方法上,因为这样会有强侵入性而且也不是专注于分析性能问题。 它是一个ADO.NET的分析器,可以分析对于ADO.NET(SQL Server、Oracle等)、LINQ-to-SQL、EF(Code First&EF Core)的原始调用(如生成的sql语句)。 可编程式的分析器,通过在想要分析的步骤上加上step。 MiniProfiler官网:http://miniprofiler.com/ MiniProfiler开源地址:https://github.com/MiniProfiler/dotnet MiniProfiler在.NetCore中使用起来非常的方便,配置简单,下面我们就来看一下怎么配置: 1、在web项目中安装 MiniProfiler.AspNetCore.Mvc 程序包。 2、在Startup.cs的ConfigureServices中配置MiniProfiler,这里主要完成MiniProfiler的自定义配置(如路由,如果没有特殊要求默认即可。)和内部服务在容器中的注入。 1 public void ConfigureServices(IServiceCollection services) 2 { 3

ASP.NET MVC 实现简单的登录 源码

一个人想着一个人 提交于 2020-08-14 03:39:13
1、创建一个控制器 如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Demo.Models; //命名空间 namespace Demo.Controllers { public class HomeController : Controller { // // GET: /Home/ DL_DemoEntities db = new DL_DemoEntities(); // 模型 public ActionResult Index() // 首页 { return View(); } public ActionResult Demo404() // 登陆失败跳转 { return View(); } public ActionResult Start_Here() // 登陆成功跳转 { return View(); } [HttpPost] public ActionResult Login( string name, string password) { name = Request[ " name " ]; password = Request[ " password " ]; if (

关于C#委托三种调用的分享

丶灬走出姿态 提交于 2020-08-14 01:53:47
一、同步调用 1、同步调用会按照代码顺序来执行 2、同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,造成糟糕的用户体验,这时候异步调用就很有必要了。 举个栗子: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading; namespace Test { public delegate int AddHandler( int a, int b); public class Calc { public static int Add( int a, int b) { Console.WriteLine( " 开始计算: " + a + " + " + b); Thread.Sleep( 3000 ); // 模拟该方法运行三秒 Console.WriteLine( " 计算完成! " ); return a + b; } } class Program { static void Main( string [] args) { Console.WriteLine( " ===== 同步调用

操作Json 和 SelectTokens with JsonPath

家住魔仙堡 提交于 2020-08-13 18:22:12
原文: 操作Json 和 SelectTokens with JsonPath JsonPath expression: $ the root object @ the current object .. recursive descent [] 下标操作符 * 通配符 ?() filter 条件 JToken. SelectToken SelectToken是JToken上的一个方法,它采用字符串路径到child token。如果在路径的位置找不到child token.,则SelectToken将返回子child token或空引用。 该路径由以句点分隔的属性名称和数组索引组成,e.g. Manufacturers[0].Name. JObject o = JObject.Parse(@"{ 'Stores' : [ 'Lambton Quay' , 'Willis Street' ], 'Manufacturers' : [ { 'Name' : 'Acme Co' , 'Products' : [ { 'Name' : 'Anvil' , 'Price' : 50 } ] }, { 'Name' : 'Contoso' , 'Products' : [ { 'Name' : 'Elbow Grease' , 'Price' : 99.95 }, { 'Name' :

api接口返回动态的json格式?我太难了,尝试一下 linq to json

徘徊边缘 提交于 2020-08-13 18:03:29
一:背景 1. 讲故事 前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下: {"Code":101,"Items":[{"OrderTitle":"订单1"}]} {"Code":102,"Items":[{"ProductTitle":"商品1"}]} 逻辑是这样的: Items 中的内容会随的 Code 的改变而改变,里面有可能是订单列表又有可能是商品列表,习惯弱类型的朋友看这种json太正常不过了,但对于强类型的我们来说,简直就是一个大写的奇葩,你这让我用什么强类型反序列化呢???,如果还没理解,请看下面的这张图吧! 经过沟通,对方果然用的是弱类型的php,磨了半天,说服让对方改了返回结构,这样就可以直接用固有类匹配。 二:寻找解决办法 从业务上来说,能说服对方让步那是最好的,但从技术上来说,这种场景有什么好的解决办法呢? 问题的本质就是json是动态的,你反序列化的时候无法指定匹配类。 1. 使用 dynamic 既然是动态的,那C#中也有一个动态类型 dynamic,何不用它来做json中动态变化的那部分的接受值,将 items 定义为 dynamic。如下图: 从图中看: rsp.Items as List<OrderItem> 返回是null,尝试失败,虽然转化失败了,但我相信你也看到了 Newtonsoft