C#学习日记5
1.LINQ构成
解析:
[1]查询运算符
[2]查询表达式
[3]表达式树
[4]LINQ的DLL及命名空间
说明:LINQ包括五个部分LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。
2.查询运算符
解析:
3.查询表达式
解析:
4.LINQ查询表达式
解析:查询表达式必须以from子句开头,以select或group子句结束。第一个from子句和最后一个select子句或group子句之间,可以包含一个或多个where子句、let子句、join子句、orderby子句和group子句,甚至还可以是from子句。它包括8个基本子句,如下所示:
[1]from子句:指定查询操作的数据源和范围变量
[2]select子句:指定查询结果的类型和表现形式
[3]where子句:指定筛选元素的逻辑条件
[4]let子句:引入用来临时保存查询表达式中的字表达式结果的范围变量
[5]orderby子句:对查询结果进行排序操作,包括升序和降序。
[6]group子句:对查询结果进行分组
[7]into子句:提供一个临时提示符。join子句、group子句或select子句可以通过该标识符引用查询操作中的中间结果
[8]join子句:连接多个用于查询操作的数据源
5.分组操作符GroupBy
解析:
[1]查询语法
var query =
(from p in db.Products
group p by p.CategoryID).ToList();
[2]方法语法
var q = db.Products.GroupBy(p => p.CategoryID).ToList();
6.串联操作符Concat
解析:串联是一个将两个集合联接在一起的过程。方法语法:
var q =
db.Products
.Select(p => p.ProductName)
.Concat
(
db.Categories.Select(c => c.CategoryName)
)
.ToList();
7.SelectMany
解析:SelectMany操作符提供了将多个from子句组合起来的功能,它将每个对象的结果合并成单个序列。
[1]查询语法
var query =
(from e in db.Employees
from o in e.Orders
select o).ToList();
[2]方法语法
var q =
db.Employees
.SelectMany(e => e.Orders)
.ToList();
8.ThenBy
解析:ThenBy操作符实现按照次关键字对序列进行升序排列。
[1]查询语法
var query =
(from e in db.Employees
orderby e.FirstName, e.LastName
select e).ToList();
[2]方法语法
var q =
db.Employees
.OrderBy(e => e.FirstName)
.ThenBy(e => e.LastName)
.ToList();
说明:ThenByDescending操作符实现按照次关键字对序列进行降序排列。
9.Reverse
解析:Reverse将会把序列中的元素按照从后到前的循序反转,其返回值为空。
10.LongCount
解析:求集合中元素的个数,返回值类型Int64。
11.集合操作符
解析:
[1]Distinct:从集合移除重复值。
[2]Except:返回差集,差集是指位于一个集合但不位于另一个集合的元素。
[3]Intersect:返回交集,交集是指同时出现在两个集合中的元素。
[4]Union:返回并集,并集是指位于两个集合中任一集合的唯一的元素。
12.IQueryable和IEnumberable区别
解析:IQueryable实现了IEnumberable接口。但IEnumerable<T>换成IQueryable<T>后速度提高很多。如下所示:
[1]IEnumerable<T>泛型类在调用自己的SKip和Take等扩展方法之前数据就已经加载在本地内存里了
[2]IQueryable<T>是将Skip,take这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤
说明:Enumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。.ToList()立即执行,而.AsEnumerable()延迟执行。
13.Linq中的Take和Skip
解析:Take<TSource>和Skip<TSource>方法在功能上补充。如果给定一个序列coll和一个整数n,则连接coll.Take(n)和coll.Skip(n)的结果会生成与coll相同的序列。
14..NET编译器SDK
解析:.NET编译器SDK包含多个API层:编译器API、诊断API、脚本API和工作区API。
15.IConfiguration
解析:IConfiguration用来加载配置值的,可以加载内存键值对、JSON或XML配置文件,通常用来加载缺省的appsettings.json。
16.IFileProvider文件系统
解析:Microsoft.Extensins.FileProviders
17.ILSpy反编译工具
解析:ILSpy是一个开源的.NET反编译工具。
18.WCF
解析:Windows Communication Foundation[WCF]是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows通讯开发平台。WCF整合了原有的Windows通讯的.net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术,它是Windows平台上开发分布式应用最佳的实践方式。简单的归结为四大部分:
[1]网络服务的协议,即用什么网络协议开放客户端接入。
[2]业务服务的协议,即声明服务提供哪些业务。
[3]数据类型声明,即对客户端与服务器端通信的数据部分进行一致化。
[4]传输安全性相关的定义。
19.dotnet-restore
解析:命令使用NuGet还原在project.json文件中被指定的依赖项,以及项目特定工具。默认情况下,依赖项和工具的还原是并行完成的。
20.AssemblyInfo.cs文件
解析:
21.TimeSpan
解析:
[1]方法
DateTime.Tick:计算机的一个计时周期,单位是一百纳秒,即一千万分之一秒
TimeSpan ts0 = new TimeSpan(36); //将时间间隔ts0初始化为36刻度数
TimeSpan ts1 = new TimeSpan(4, 20, 33); //将时间间隔ts1初始化为4小时20分33秒
TimeSpan ts2 = new TimeSpan(2,10,36,45); //将时间间隔ts2初始化为2天10小时36分45秒
TimeSpan ts3 = new TimeSpan(6, 12, 56, 45,23); //将时间间隔ts3初始化为6天12小时56分45秒23毫秒
[2]属性
Days:直接取出TimeSpan结构所表示的时间间隔的天数部分
Hours:直接取出TimeSpan结构所表示的时间间隔的小时部分
Minutes:直接取出TimeSpan结构所表示的时间间隔的分钟部分
Seconds:直接取出TimeSpan结构所表示的时间间隔的秒数部分
Milliseconds:直接取出TimeSpan结构所表示的时间间隔的毫秒部分
Ticks:表示多少个一百纳秒(计算机的一个计时单位)
TotalDays:将TimeSpan结构所表示的时间间隔换算成等效天数
TotalHours:将TimeSpan结构所表示的时间间隔换算成等效小时数
TotalMinutes:将TimeSpan结构所表示的时间间隔换算成等效分钟数
TotalSeconds:将TimeSpan结构所表示的时间间隔换算成等效秒数数
TotalMilliseconds:将TimeSpan结构所表示的时间间隔换算成等效毫秒数
22.ADO
解析:
[1]ADO是一个访问数据库中数据的编程接口
[2]ADO代表ActiveX Data Objects
[3]ADO是一个微软的Active-X组件
[4]ADO会随着微软IIS自动安装
23.TextStream对象
解析:TextStream对象用于访问文本文件的内容。
[1]Close:关闭一个打开的TextStream文件。
[2]Read:从一个TextStream文件中读取指定数量的字符并返回结果。
[3]ReadAll:读取整个TextStream文件并返回结果。
[4]ReadLine:从一个TextStream文件读取一整行[到换行符但不包括换行符]并返回结果。
[5]Skip:当读取一个TextStream文件时跳过指定数量的字符。
[6]SkipLine:当读取一个TextStream文件时跳过下一行。
[7]Write:写入指定的文本到一个TextStream文件中。
[8]WriteLine:写入指定的文本和换行符到一个TextStream文件中。
[9]WriteBlankLines:写入指定数量的换行符到一个TextStream文件中。
24.FileStream、StreamReader、StreamWriter、TextReader、TextWriter、BinaryReader、BinaryWriter
解析:
[1]FileStream:对于在文件系统上读取和写入文件非常有用,FileStream缓存输入和输出,以获得更好的性能
[2]StreamReader类:实现一个TextReader,使其以一种特定的编码从字节流中读取字符
[3]StreamWriter类:实现一个TextWriter,使其以一种特定的编码向流中写入字符
[4]TextReader类:表示可读取连续字符系列的读取器
[5]TextWriter类:表示可以编写一个有序字符系列的编写器。该类为抽象类
[6]BinaryReader类:用特定的编码将基元数据类型读作二进制值
[7]BinaryWriter:以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。BinaryWriter类和BinaryReader类用于读取和写入数据,而不是字符串
[8]StreamReader.BaseStream:返回基础流
25.封装SqlHelper类
解析:
[1]SqlHelper是一个基于.NETFrameWork的数据库操作组件,组件中包含操作数据库的各种方法,他封装的目的无疑是简化重复写的数据库连接,当SqlHelper封装以后,只需要给方法传入一些参数,就可以实现对数据库的访问。
[2]SqlHelper类通过一组静态的方法来封装数据访问功能,不能被继承和实例化。SqlHelper类中实现的每种方法的重载,每种方法的重载都支持不同的方法参数,开发人员可确定传递、连接、事物和参数,也使得选择访问数据的方式变得更加灵活。
本文地址:https://blog.csdn.net/shengshengwang/article/details/108988609
上一篇: 应该光膀子嘛