Linq初体验

Hello,我又回来了,懒懒的好多日没有写博客的日子。

今天给大家讲讲C#中的Linq用法。

要学会使用Linq的话就一定要理解三个前置知识(委托、泛型、Lambda);

好了,说到这里,估计学C#的很多小伙伴就蒙了。

但是这三个点非常重要,是贯穿了整个C#体系的精髓部分。

本节是专门讲讲Linq是怎么用,以及为什么这么用。

Linq一般常见的用法是结合EF使用的,例如下面这段代码:

Models dbContext = new Models();
var projectInfoCount = dbContext.S_I_PROJECTINFO.ToList().Count;
var projectInfo = dbContext.S_I_PROJECTINFO.Where(p => p.NAME.Contains("钢铁")).Select(p=>p.NAME+ "	" + p.CODE).ToList();
var p2 = dbContext.S_I_PROJECTINFO.Select(p => p.CODE + " " + p.NAME + " " + p.MODECODE).Where(p => p.Contains("钢铁")).ToList();

首先Models是我建立的模型对象,这个模型对象你可以直接理解成数据库;

S_I_PROJECTINFO是数据库中的一张表,通过Tolist()方法可以将表中的数据全部以List对象返回;

也可以像SQL语句中,使用where和select这种通用查询和限制方法,只不过使用时内部的参数一般为委托;

例如在where限制方法中,接受的第一个参数为Func委托,委托方法的第一个参数是S_I_PROJECTINFOl类型,返回值是bool类型;

 

 因此直接传入Lambda表达式p=>p.NAME.Contains("钢铁");

然后像使用Linq的语句,一般使用var声明即可,可以缩短代码以及快速编码。

由于在调用的时候就已经明确了泛型变量为S_I_PROJECTINFO所以其余的泛型方法都可以不用显示写上。

怎么生成这个EF模型对象的呢(操作环境为VS2017)?

首先在项目中新建一个文件夹(因为EF生成的文件比较多,放一个文件夹方便管理)

 右键点击 添加 -> 新建项

选择“ADO.NET实体数据模型”,然后命名;

点击“来自数据库的EF设计器”

 刚开始是没有连接信息的,点击“新建链接”

填好信息,然后测试连接通过即可。

然后在上一步界面直接点击完成

 在这个界面中,选择你需要在该模型对象中包含哪些表,完成即可。

原文地址:https://www.cnblogs.com/LeeSki/p/12144780.html