目录
基础知识
LINQ技术
LINQ的基础-C#3.0
自动属性
隐式类型
对象集合初始化器
匿名类
扩展方法
Lambda表达式
自动属性
其实就是一个语法糖,自动执行getter,setter。常用写法
public string HalloWorld { get; set; }
隐形类型
就是我们常用的var 关键字啦,可以用来声明一个未知类型的对象,可以用var自动识别查询获得的结果类型(object也是可以的)。
对象初始化器和集合初始化器
我们一般获取一个对象一般都是通过对象的构造方法(含默认)来实例化对象,并给这个实例赋值。如果用对象初始化器则能简化代码。
对象初始化器在实例化时可以直接给属性赋值:People p=new People{NAME=“张阳”,Age=“22”,ID="24545"};
集合初始化和对象实例化应用类似:
ArrayList<People> ps=new <People>{
new People{NAME="zhangyang",Age="21",ID="ssss"},
new People{NAME="zhangyang1",Age="21",ID="sssds"}
}
匿名类
匿名类需要关键字var声明,如 var object=new{object initializer}
扩展方法
在.NET2.0时代是没有LINQ的,所以.NET2.0以及之前版本中的集合类在设计的时候没有预留用于LINQ的方法。为了在不破坏这个类现有封装的前提下又可以为其添加LINQ的支持就需要用到扩展方法。
扩展方法为一静态方法,声明于一个静态类,其参数前加上一个this关键字,参数的类型表示这个扩展方法要对这个类型进行扩展。如上述代码表示其要对字符串类型进行扩展。但其实际是个实例方法,需要通过实例调用。记住关键特征就是参数前有this关键字。
lambda表达式
“Lambda 表达式”(lambda expression)是一个匿名函数,可以表示为委托的代码,或者表示为表达式树的代码,它所表示的表达式树可以编译为委托。 Lambda 表达式的特定委托类型取决于其参数和返回值。不返回值的 Lambda 表达式对应于 Action
委托,具体取决于其参数数量。 返回值的 Lambda 表达式对应于 Func
委托,具体取决于其参数数量。
Lambda 表达式广泛用于:
-
将要执行的代码传递给异步方法,例如 Task.Run(Action)。
-
编写 LINQ 查询表达式。
-
创建表达式树。
lambda表达式实现委托代码:
delegate int CalculateHandler(int x, int y);
public void Test()
{
CalculateHandler sumHandler = (x, y) => x + y;
MessageBox.Show(sumHandler(1, 2).ToString());//输入结果3
}
讲到委托,这里一并介绍一下吧:
委托是C#实现回调函数的一种机制,回调函数应该不用介绍了吧,就是一旦满足条件就调用指定函数。委托需要delegate关键字声明,输入委托参数必须与回调函数一致。当然如果用lambda表达式则可以省去回调函数的编写,即用lambda表达式实现了委托的回调函数。
.NET中的数据库访问
数据库访问方案主要有:DataSet、ADO.NET2.0、ORM
LINQ to SQL
ADO.NET EntityFramwork
Entity Framework的设计很多地方都保留了高扩展性。其最重要的一个改进在于其映射定义的灵活性。
Entity Framwork 介绍
EDM
EDM(Entity Data Model),实体数据模式。EDM模式在项目中的表现形式就是扩展名为.edmx的文件,这个文件本质上是一个XML文件,可以手工编辑此文件来自定义CSDL(概念模型)、MSL(映射)与SSDL(存储模型)这三部分。
CSDL、MSL、SSDL我打算在后面的文章中具体介绍以及EntityFramwork在程序中的具体应用,希望对初学者有帮助。
文章借鉴:https://blog.csdn.net/uffvhj/article/details/83791429