字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string'; json字符串:指的是符合json格式要求的js字符串。...其语法格式为:JsonConvert.SerializeObject(object),代码中的”object”就是要序列化的.net对象,序列化后返回的是json字符串。...2,使用LINQ to JSON定制JSON数据 使用JsonConvert对象的SerializeObject只是简单地将一个list或集合转换为json字符串。...但是,有的时候我们的前端框架比如ExtJs对服务端返回的数据格式是有一定要求的,比如下面的数据格式,这时就需要用到JSON.NET的LINQ to JSON,LINQ to JSON的作用就是根据需要的格式来定制...下面我们就用LINQ to JSON返回上面分页格式的数据。
"/100"; } 使用C#2中的匿名方法,上面的例子中可以省去DoWork和ChangeLabel两个方法,代码如下: private void btnTest_Click(object sender...Lambda表达式 实际上是一个匿名方法,Lambda表达的表现形式是:(参数列表)=>{语句},看一个例子,创建一个委托实例,获取一个string类型的字符串,并返回字符串的长度。...Linq是一个很大的话题,也是NET3.5中比较核心的内容,有很多书籍专门来介绍Linq,下面只是做一些简单的介绍,需要注意的是Linq并非是Linq To Sql,Linq是一个大的集合,里面包含:...下面以Linq To Object为例子来看看Linq是怎么使用的: public class UserInfo { public string Name { get; set; }...字符串嵌入 字符串嵌入可以简化字符串的拼接,很直观的就可以知道需要表达的意思,在C#6及以上版本中都应该用这种方式来处理字符串拼接,代码如下: //字符串嵌入 string name = "oec2003
相交 下图演示 Enumerable.Intersect 的行为。 返回的序列包含两个输入序列共有的元素。 ? 联合 下图演示对两个字符序列执行的联合操作。 返回的序列包含两个输入序列的唯一元素。...使用多个 from 子句 Enumerable.SelectManyQueryable.SelectMany 查询表达式语法示例 选择 下面的示例使用 select 子句来投影字符串列表中每个字符串的第一个字母...(s); /* 输出: a a a d */ SelectMany 下面的示例使用多个 from 子句来投影字符串列表中每个字符串中的每个单词。...代码通过从源集合的每个花卉名称列表中提取前两项来创建一个“花束”。...Enumerable.ToArray、Enumerable.ToDictionary、Enumerable.ToList 和 Enumerable.ToLookup方法可用于强制执行即时的查询,而不是将其推迟到枚举该查询时
.net中处理JSON的工具,我们最常用的是下面两个功能。...其语法格式为:JsonConvert.SerializeObject(object),代码中的”object”就是要序列化的.net对象,序列化后返回的是json字符串。...2,使用LINQ to JSON定制JSON数据 使用JsonConvert对象的SerializeObject只是简单地将一个list或集合转换为json字符串。...但是,有的时候我们的前端框架比如ExtJs对服务端返回的数据格式是有一定要求的,比如下面的数据格式,这时就需要用到JSON.NET的LINQ to JSON,LINQ to JSON的作用就是根据需要的格式来定制...下面我们就用LINQ to JSON返回上面分页格式的数据。
Console.ReadKey(); string // 类中F12观察, == 号运算符重载了 确定两个指定的字符串是否具有相同的值。...//对于两个object类型的变量比较,或者一个object和一个int/string等变量比较,最好使用Object.Equals(obj1,obj2) } } } 2.关于反射...--测试字符串的返回--> @RPcshtmlHelper.Test3() 的字符串的返回--> @Model.Zifu @RPcshtmlHelper.Raw(Model.Zifu) @{ string...="xcl",Zifu="C#中的泛型 表示:ListString>",Persons=list,PersonId=2});//两个新的属性 //3.将转化过的模板内容输入到浏览器
(' ',linqList)); 这段代码使用Linq对List列表进行筛选、分组、排序等一系列操作展示了Linq的强大和便捷,那么我们为什么需要学习Linq?...可以看到这样一堆逻辑只几行Linq很快就可以实现,如果要我们自己实现方法去处理这个List肯定是比较繁琐的。 Linq是什么?...只需向定义添加 delegate 关键字即可,如下我们定义一个比较两个数字的委托类型。...每次使用委托的时候我们都要定义比较麻烦,所以框架已经为我们定义好了两个类型,Action和Func一个无返回值,一个有返回值,并且采用泛型定义了多个委托以满足我们日常使用。...delegate 运算符创建一个可以转换为委托类型的匿名方法 如下我们直接在委托变量后面使用delegate 将参数方法体直接写,而不用声明其名称的方式。
前言 -为什么需要扩展 Linq 方法 Linq 在 .net 中使用是比较多的,而微软开发的 linq 相关函数无法满足实际项目开发中的需求,我们需要自己来扩展一些方法。...c# 扩展方法 在 Asp.Net Core 开发中或者其他的后端开发中都会有一个需求(尤其对于中台或者后台管理),那就是展示数据列表;当然不是普普通通的数据列表展示,而是需要进行排序、分页、查询关键字来获取列表...propertyName, Liststring> contentList) { // 传递到表达式目录树的参数 x 和它的类型 ParameterExpression...(){ var articleTags = new List(); // 将属性key字符串传递进来就可以实现查询和排序,方便使用,PropertyName可以随意更改,...就可以直接调用 UseCoditionFind 然后获取返回的 query,然后再 ToList 获取数据,返回即可。
可以看到,Student 表中的 ClassId 值是 0,而并不是我们预想的 1,这是一个问题,在不增加外键的情况下,我们一般会这样解决: static void Main(string[] args...所以代码命名尽量规范些,EF 是比较“智能”的。...使用实体框架后,主要就是利用LINQ进行一些集合的操作,这些LINQ的操作虽然有点难度,不过学习清楚了,处理起来也是比较方便的。...不过,也不是所有的LINQ递归函数都可以做的非常简化,有些递归函数,我们还是需要使用常规的思路进行处理。...因此我们在界面操作的都是DTO对象类型了,我们在定义的时候,为了避免更多的改动,依旧使用***Info这样的类名称作为DTO对象的名称,***代表表名对象。
在需要快速的代码中,对于每帧或不确定时间触发的事件,不使用lambda表达式的设计更安全,而不是使用大量静态来消除GC.Alloc。...这个循环中的两个比较都不是由GC.Alloc,差异是由于实现的不同。 对于数组,foreach也进行了优化,与for中描述的相比几乎没有变化。...根据以上结果,对于数据量大且处理速度必须快的情况,应该考虑使用数组而不是List 但是,如果重写不够充分,例如在没有本地缓存的情况下引用字段中定义的List时,可能无法加快该过程。...对象池 正如我们在许多地方所提到的,在游戏开发中预先生成对象并使用它们而不是动态生成它们是非常重要的。...表示字符串的Char对象。字符串GC。Alloc很容易在一次使用中出现。例如,使用字符连接操作符+连接两个字符串将导致创建一个新的字符串对象。
IEnumerablestring> strings = new Liststring>(); // An object that is instantiated with a more derived...例如,通过 List,你将获得 Liststring> 或 List 并且可以对这些字符串或整数执行类型安全操作,同时对其进行循环访问。...通过命名实参,你可以为特定形参指定实参,方法是将实参与该形参的名称关联,而不是与形参在形参列表中的位置关联。 通过可选参数,你可以为某些形参省略实参。...使用命名参数和可选参数时,将按实参出现在实参列表(而不是形参列表)中的顺序计算这些实参。 命名形参和可选形参一起使用时,你可以只为可选形参列表中的少数形参提供实参。...由于 sellerName 和 productName 都是字符串类型,所以使用命名实参而不是按位置发送实参是有意义的,可以区分这两种类型并减少代码阅读者的困惑。
基本语言要素 正确操作字符串 注意隐式的装箱和拆箱,string str = "a" + 1.ToString(); 优于 string str = "a" + 1;。...而不是int。...类型格式化字符串 IFormattable和IFormatProvider的用法。这个两个接口项目中不常使用,但是IFormatProvider倒是可以作为分离变化的教程来学习。...使用集合初始化器对集合进行初始化 数组:string[] list = { "1", "2", "3" }; 列表:List list = new List()...使用LINQ,不需要再使用集合的比较器和迭代器 LINQ极大简化了集合操作,理解比较器和迭代器的原理还是重要的,但开发中已经不再需要去实现它们了。
传统上,针对数据的查询都是以简单的字符串表示,而没有编译时类型检查或 IntelliSense 支持。...由于查询本身必须使用 foreach 以便返回结果,因此这些查询在执行时不使用显式 foreach 语句。另外还要注意,这些类型的查询返回单个值,而不是 IEnumerable 集合。...orderby 子句将使返回的序列中的元素按照被排序的类型的默认比较器进行排序。...在使用 group 子句结束查询时,结果采用列表的列表形式。列表中的每个元素是一个具有 Key 成员及根据该键分组的元素列表的对象。...select 语句返回只捕获原始 Customer 对象的两个成员的匿名类型。 ①数据源的类型参数始终为查询中的范围变量的类型。
LINQ中隐式类型的体现:你可以统统用var来修饰LINQ语句返回的类型。一般来说LINQ语句的返回类型通常名字都比较长,而且也不是十分显而易见。如果没有隐式类型,在写代码时就会比较痛苦。...如果两个匿名类型有相同数量的成员,且所有成员拥有相同的类型名称和值的类型,而且以相同的顺序出现,则编译器会将它们看作是同一个类型。...,或者某个属性使用了long而不是int,则会引入一个新的匿名类型。...同一个匿名类型的两个实例在判断相等性时,采用的是依次比较每个成员的值的方式。...之后你就可以通过调用String.IsEmail来方便的使用这个方法了。 C#中提供了两个特别醒目的类:Enumerable和Queryable。两者都在System.Linq命名空间中。
(FilterOdd,FilterEven),让我的委托变量指向这两个方法。...而C# 3.0则更进一步,通过Lambda表达式,我们可以一种更为简洁方式编写事件处理代码,新的Lambda事件处理代码看上去就像一个计算表达式,它使用"=>"符号来连接事件参数和事件处理代码。...我们再来看看System.Linq名称空间下的扩展方法有什么特征: ?...随后将封装此方法的委托(看下面实例)传递给Enumerable.Where、Enumerable.Order、 Enumerable.Select 方法,以将字符串数组中的字符串进行处理。...通过使用由委托封装的方法,可以对数组或列表中的每个元素执行操作 using System; using System.Collections.Generic; using System.Linq; using
比较和排序 元组(Tuple)的比较和排序通常需要自定义比较器(comparer)来实现。这是因为元组是值类型,直接使用比较运算符(如)进行比较会比较元组的各个组成部分,而不是整个元组。...string> y) { // 比较逻辑,例如按照整数升序,字符串降序排列 int result = x.Item1.CompareTo(y.Item1);...:使用自定义的比较器类进行排序,可以通过List.Sort()方法或LINQ的OrderBy()方法来实现。...Liststring>> tuples = new Liststring>>(); // 添加元组到列表中 tuples.Add(new Tuple的类型转换 元组的隐式转换:如果两个元组的元素类型和顺序完全相同,它们可以隐式地相互转换。
json的书写格式 json语法很简单,也很容易理解,具体如下: 语法规则: 数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JSON 值: 数字(整数或浮点数)字符串(在双引号中)逻辑值(...true 或 false)数组(在方括号中)对象(在花括号中)null JSON 名称/值对 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值: "firstName" : "John"...public Form1() { InitializeComponent(); } private void Form1_Load(object...sender, EventArgs e) { } private void button1_Click(object sender, EventArgs...(); //json格式字符串转换为实体类,大括号{}表示对象,[]数组表示列表。
导语 Linq在几年前写的代码程序中用过,后来因为lambda表达式的方式,很多地方直接用lambda就可以实现了,所以几乎没再用过Linq的查询,前两天的做的.net5的项目中因为要两个List中进行分组查询...说起来更新.net 5后,Winform的窗体设计器也是有了,以前只是.net core 3.1的时候也尝试过创建Winform的程序,结果没有窗体设计器而放弃了。 创建Model类 ?...//商品名称 public string fname = ""; //商品规格 public string specs = "";...在窗体布局中加入了一个textBox用于显示结果,一个Button用于处理两个List分组求和。 Linq分组求和代码 ?...上面图中可以看出来,随机生成的商品流水和商品信息,通过两个List的集合实现了分组求和。 完
提示,即使走了我们的查询过滤条件,可以再让calcite帮我们过滤一次,比较灵活。...; import java.util.Map; public class Client { /** * 测试的时候用字符串 defaultSchema 默认数据库 name 数据库名称...String,Object>> getData(ResultSet resultSet)throws Exception{ ListString,Object>> list...; import java.util.Map; public class Client { /** * 测试的时候用字符串 defaultSchema 默认数据库 name 数据库名称...String,Object>> getData(ResultSet resultSet)throws Exception{ ListString,Object>> list
= userId.ToString(); ModifyTime = modifyTime; } 这里用来保存用户ID的字段,我都用了字符串做保存,是借用字符串类型保存数据时能容纳更多的数据类型...对于数据库而言,视图和有些数据表都是不被允许改变的,这时候就需要我们只对调用方开放查询接口,而不开放修改接口。...所以,在Domain下应该有以下两个接口: using System; using System.Collections.Generic; using System.Linq.Expressions;.../// /// List Search(); /// /// 返回所有符合条件的数据 /// 两个类,接口的定义会变得十分复杂,不利于代码的可读性: using System; using System.Collections.Generic; using System.Linq.Expressions
后续可能还会研究其它不是针对数据对象的验证方式,这是后话了,暂且不表。...其中,错误列表是个字典,键为属性名,值为该属性的错误信息字符串列表。而两个方法主要是对错误列表进行相应的操作,并且触发变动事件。...另外还重载了一个 GetErrors 方法,也是针对于同时处理几个属性的场景,并且之前返回类型为 ListList>,相当于只是把错误列表的 key 去掉了,并没有整合,而我这个方法返回值为 List.../// 错误列表(List<string>) public Liststring> GetErrors(Liststring> propertyNameList...然后是加法命令中的改造,主要就是使用了我加的那两个方法(IsContainErrors 和 GetErrors),传递的都是两个操作数属性名称列表,如果有错误(为空),就弹窗提示,并拦截代码执行逻辑(直接返回跳出
领取专属 10元无门槛券
手把手带您无忧上云