Linq初体验

摘要:
Hello,我又回来了,懒懒的好多日没有写博客的日子。今天给大家讲讲C#中的Linq用法。要学会使用Linq的话就一定要理解三个前置知识;好了,说到这里,估计学C#的很多小伙伴就蒙了。但是这三个点非常重要,是贯穿了整个C#体系的精髓部分。由于在调用的时候就已经明确了泛型变量为S_I_PROJECTINFO所以其余的泛型方法都可以不用显示写上。然后在上一步界面直接点击完成在这个界面中,选择你需要在该模型对象中包含哪些表,完成即可。

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

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

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

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

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

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

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

Models dbContext = newModels();
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类型;

Linq初体验第1张

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

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

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

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

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

Linq初体验第2张

右键点击 添加 -> 新建项

Linq初体验第3张

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

Linq初体验第4张

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

Linq初体验第5张

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

Linq初体验第6张

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

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

Linq初体验第7张

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

免责声明:文章转载自《Linq初体验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WinForm控件之【BindingNavigator】【DataSet】【BindingSource】【DataGridView】查看正在使用的mysql binlog日志下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

并发编程概述--C#并发编程经典实例

优秀软件的一个关键特征就是具有并发性。过去的几十年,我们可以进行并发编程,但是难度很大。以前,并发性软件的编写、调试和维护都很难,这导致很多开发人员为图省事放弃了并发编程。新版.NET 中的程序库和语言特征,已经让并发编程变得简单多了。随着Visual Studio 2012 的发布,微软明显降低了并发编程的门槛。以前只有专家才能做并发编程,而今天,每一个...

linq的decimal类型保存到数据库只保存到小数点后两位的问题

今天的一个decimal类型保存到数据的问题困扰了我很长时间,最后就是一个小小的设置问题解决······坑······深坑···· 话不多说,直接说问题,在说答案: 问题:linq当采用EF的DbContext保存decimal类型数据到数据库,默认只会保存小数点后的前2位小数,其余均置0;         例如保存1.23456789,实际存到数据库里的...

java 增强for循环与泛型

一 增强for循环   增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部 原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。 格式: for(元素的数据类型 变量 : Collection集合or数组){ }   它用于遍历Collection和数组。通常只进行遍历元素,不要...

十三.Java中的泛型和枚举

1.java泛型: 这个java中的通配符“上界”“下界”有关。在集合中:上界<? extends Number>规定:只能取(get),不能添加(add)。下界<? super Number>规定:不能取(get),只能添加(add)。无界<?>:不能get也不能add。 现在试想一下你的例子,List<? ex...

干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结

我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章《.NET CORE与Spring Boot编写控制台程序应有的优雅姿势》看到都上48小时阅读排行榜(当然之前发表的文章也有哦!),说明关注.NET CORE及Spring Boot的人很多,也是目前的主流方向,于是我便决定系...

Vue3+TypeScript?看这一篇就够了

1、TypeScript快速上手 1.1 初识 TypeScript TypeScript 的介绍 TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScript代码。 2012年10月,微软发布了首个公开版本的TypeScript,2013年6月19日,在经历了一个预览版之后微软正式发布...