首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET深入解析LINQ框架(二:LINQ优雅前奏)

LINQ里面充斥着大量扩展方法,在这些扩展方法后背其实是隐藏着一个很大设计秘密,那就是链式编程模型,下面我们将通过详细学习链式编程模式来理解LINQ为什么能连贯使用相同方法而显现的如此优雅...比如筛选出所有性别是女生学生,然后再在所有已经筛选出来女性学生集合当中筛选出年龄大于20周岁学生列表,再继续筛选来自江苏南京地区学生列表等等这一系列连贯操作。...这样处理方式想是LINQ最为常见,毕竟LINQ是为了查询而生,查询主要就是面向集合类数据。 对象图: ?...//筛选出年龄在20岁学生列表 13 SelectByAddress("江苏南京");//筛选出地址为“江苏南京”学生列表 看起来是不是很优雅,反正觉得很优雅很舒服。...更为关键所有的扩展方法逻辑表达式都是Func泛型委托,也就是直接使用委托去执行逻辑操作,在我们调用时候是以Lambda形式给出逻辑条件,这些逻辑被直接编译成可以执行匿名方法,不是表达式对象

2K30

LINQ to SQL中使用Translate方法以及修改查询用SQL

,意思就是不能在LINQ to SQL显式构造Demo.Item对象。   事实上在RTM之前版本,以上语句是能运行通过——是指通过,不是正确。...LINQ to SQL在RTM之前版本有个Bug,如果在查询显式构造一个实体的话,在某些情况下会得到一系列完全相同对象。...DataContextExtensions是对于LINQ to SQLDataContext对象扩展,如果以后有新扩展也会写在这个类。...在之前文章,以及MSDN示例都只是通过这个DbCommand对象来查看LINQ to SQL所生成查询语句。...因此,如果您使用了ColumnAttributeName属性改变了数据库字段名与实体对象属性名映射关系,那么在创建匿名对象时候还是要使用数据库字段名,不是实体对象名,如下: public static

4.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

金三银四面试:C#.NET面试题中高级篇5-Linq和EF

3.为什么用EF不用原生ADO.NET? 4.如何提高LINQ性能问题? 5.什么是IEnumerable? 6.IEnumerable缺点有哪些?...8.LINQ可视化工具简单介绍一下? 9.LINQ to Object和LINQ to SQL有何区别? 10.除了EF,列举出你知道ORM框架? 11.在哪些类型额项目中你会选择EF? 为什么?...这样设计好处在于我们可以针对概念模型进行所有数据操作不必关心数据存储关系,使我们可以更加自然采用面向对象方式进行面向数据应用程序开发。 2.什么是ORM?...3).尽可能使用一条查询不是多条 4).只为了展示数据,不进行后续修改时,可以使用AsNoTracking。...Unchanged:实体将由上下文跟踪并存在于数据库,其属性值与数据库相同。 Added:实体将由上下文跟踪,但是在数据库还不存在。

3.9K30

【自然框架】——思路、结构、特点介绍(初稿,欢迎大家多提意见)

所以最近这些日子又重新设计了一下,重新考虑整理,在逐步整理过程也了解到了MVC意图。 自然框架说明 一、 目的  针对增删改查密集型项目,做到快速开发、快速维护目的。...控件宽度、高度,文本框最大字符数,下拉列表Item设置,控件和字段对应等等。而这样表单有多少呢?10个、50个、100个?项目越大数量也就越多。...根据环境分为了三类:添加/修改、查询、数据列表。于是就有了图一。   控件是各种各样,属性也是五花八门,有一部分是相同,那么就按照分类变成了图一里三个类属性。...“容器”:上面说其实是内存里容器,内存里数据是不能永久保存,断电就没有了,所以要找一个能够永久保存容器。可能您想到是XML,但是想到是关系型数据库。为什么用关系型数据库呢?...因为可以利用“关系”来避免冗余,提高利用率。同一个表里同一个字段,可能在多个地点(比如表单、查询列表,另一个页面的查询、表单、列表)出现,需要多次出现怎么办?

78070

EntityFramework数据持久化复习资料5、LINQ概述与应用(超终点)

概述 LINQ关键字 LINQ语法 基础示例 对象筛选示例 示例类【Users】 创建对象列表 1、LINQ根据id精准查询·返回单个对象 2、LINQ根据【昵称】模糊查询返回列表 3、LINQ分组查询...在LINQ,可以使用与查询数据库相同编码模式来查询和转换XML文档、SQL数据库、ADO.NET数据集以及.NET集合数据,并支持LINQ查询任何格式数据。...select expr | group expr by key [into id query] 基础示例 这里写了一个基础示例,这个示例返回是nums数组中所有的偶数。...(linq.age); 异常效:1:(这里查询是20,很明显没有这个ID,故而报了异常) 异常效果2:(数据格式化了一下,把其中id=2值写了2个。...使用SingleOrDefault查询出两个相同结果依然会出现异常提示) 一般情況下都会使用【SingleOrDefault】,因为这能直接判断这个唯一信息是否正确,项目中出现相同值肯定是有异常

2.1K20

给 c# 程序员十个重要提示

给 c# 程序员十个重要提示 本文讲述认为对 c# 程序员最重要 10 个提示, 每个提示都会有一段对应代码, 对 新手来说也很容易掌握。...在 .NET 编写 LINQ 查询时, 只有当你访问 LINQ 查询结果时, LINQ 查询才会被执 行, LINQ 这种特征被称为延迟执行, 不过值得注意是每访问一次结果, LINQ 查询...为了避免重复 LINQ 查询重复执行, 可以先将查询转换成列表, 如下所示: public void MyComponentLegacyMethod(List masterCollection...) { // 在下面示例, 如果没有调用 ToList , LINQ 查询将会被执行两次 var result = masterCollection.Where(i => i > 100..., 添加了一个新项目, 要避免这种情况, 应使用 AsReadOnly 不是 AsEnumerable : public IEnumerable ReadOnlyNameCollection

1.1K40

.NET 2.0运行时LINQ

启用LINQ应用程序是否可以在仅安装了.NET 2.0运行时计算机上运行? 从理论上讲,LINQ只不过是语法糖,得到IL代码应该与.NET 2.0代码相同.....: 没人提到LINQBridge是很奇怪.这个小巧项目LINQ(IEnumerable,但没有IQueryable)及其依赖(Func,Action等)到.NET 2.0后端.和: 如果您项目在编译期间引用...LINQBridge,那么它将绑定到LINQBridge查询运算符; 如果它在编译期间引用System.Core,那么它将绑定到Framework 3.5查询运算符. +1经常使用它.注意:这是LINQ....NET 2.0不存在 在Main方法中使用LINQ查询.例如下面的那个....建立 将所有bin输出复制到仅安装.NET 2.0计算机 跑 (需要.net 2.0 SP1,不知道捆绑System.Core.dll是否违反了EULA) 重新分发System.Core.dll违反了

16710

.NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

LINQ支撑原理进行了大片理论介绍,不知道效果如何; 在结束上一篇文章时候,看到一个前辈评论说建议多写写LINQ使用方面的,不是讲这些理论。...更觉得这些文章属于使用类,在实际项目中用到时候稍微查一下能用起来就行了,重要是能搞懂其原理才是我们长期所追求,因为这些原理在任何一个应用框架设计中都是相通,可以帮助我们举一反三学习,...比如你在开发一个关于数据密集性框架,可能不是实时持久化,但是能在外部提供某种查询工具来查询内存数据,所以这个时候需要我们能扩展LINQObject查询能力。...但是大部分情况下我们都是针对所有的IEnunerale类型进行扩展,这样可以很好结合Linq链式编程。原理就这么多,根据具体项目需要适当采纳。...顺着数字序号理解,IEnumerable是Linq to Object数据源,Enumerable静态类是专门用来扩展Linq查询表达式查询方法,所以当我们编写Linq查询IEnumerable

1.4K11

全面迎接.Net3.0时代到来(WCFWFWPFLINQ)

查询语法外,其他都是我们所熟悉语法,LINQ查询语法跟SQL查询语法很相识,除了先后顺序。...Q:为何 LINQ 查询语法是以 from 关键字开头不是以 select 关键字开头?select 开头这种写法跟SQL写法更接近,更易懂呀?...编程语言以 select 开头写LINQ查询语法不是没出现过,你如果使用过2005年VB9 CTP 版本,那时候VB9LINQ查询语法就是 select 关键字在前面,但是 select 关键字在前面...你应该注意到所有这些场景都有一个相同主题:分布式应用通信。但是,很显然,每一种技术都用到不同方法或技术来解决这个问题。...,當然由於目前還在開發們並不確定會不會有一定限制,根據WPF/E開發組定義,WPF/E仍然是WPF子集,不是後繼版本。

1.7K100

ASP.NET Core RESTful Web服务开发教程

在本例,我们将为GET、POST、PUT和DELETE请求创建单独Controller,尽管这不是必须,但为了更清楚起见,使用了单独Controller。...首先,从方法列表中选择POST,并在媒体类型添加记录,以便将其插入应用程序。现在,单击绿色箭头按钮,您可以看到下面的窗口。 ?...注意,这里返回类型是IActionResult,这是一个泛型类型。但是返回类型实现逻辑与第一个方法完全相同,它只是用来添加一条记录。...这三种方法都在执行相同操作,即向学生列表添加记录。但是它们有不同返回类型和不同资源路径。意图非常明确。首先,从方法返回对象不同方法是什么?...现在用GET调用验证更新记录。 ? 现在是测试我们最后一个服务DELETE请求时候了。使用下面的URL并从列表删除一条记录。

7.5K60

【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层实现

在Domain.Implements 添加后,在BaseRepository 添加如下引用: using System.Linq; using System.Linq.Expressions; 实现方法...,在使用条件查询单个数据时候,使用了SingleOrDefault不是FirstOrDefault。...实现分页: 在实现分页之前,我们知道当时我们定义分页参数类排序字段用是字符串,不是lambda表达式,Linq To EF需要一个Lambda表示才可以进行排序。...,先在Utils项目创建以下目录:Extend>Lambda,并在目录添加一个ExtLinq类,代码如下: using System.Linq; using System.Linq.Expressions...下一篇,我们将为大家介绍如何优雅执行SaveChanges方法。 这一篇介绍到这里,虽然说明不是很多,但是这也是在开发总结经验。

1.5K40

.NET深入解析LINQ框架(三:LINQ优雅前奏)

那么很大一部分应用场合我们需要根据用户选择来查询数据源,以往我们都是通过判断方式来拼接查询SQL字符串,但是现在我们面对是强类型LINQ查询,是否可以很方便进行类似查询。...为什么需要动态LINQ查询,上面说过问题出在我们没办法在运行时再去编写Lambda表达式了,都知道Lambda表达式到最后就是被编译成Expression表达式树对象,所以我们可以在运行时自己动态构建...关于动态LINQ第三方API不是很多,比较常用就是Dynamic.cs使用,具体没有用过,看过相关文档应该还是比较方便。...不是微软不能支持所谓缺点,而是它确实有它本意。...C#中去编写如JS动态对象功能,不过目前还不是很成熟,动态对象成员没有智能提示,应该是还没有被大面积使用起来,以后肯定也是一大美餐; 总结:LINQ框架基本使用原理就全部结束了,后面我们就来学习如何能让

1.6K20

为什么LINQ to XML性能要优于XmlDocument?

在这里想申明一点,没有测试就没有发言权,并不是所有的”懒人技术“都是以牺牲性能为代价这人比较喜欢就技术论技术,不喜欢武断言论,于是展开了讨论。本文只是做一个总结。...LINQ to XML 一个最重要性能优势(与 XmlDocument 相比)为:LINQ to XML 查询是静态编译 XPath 查询则必须在运行时进行解释。...这个因素是性能至关重要,所谓”子不教,父之过“! 也就是说,LINQ to XML查询被编译成静态链接方法调用,这样性能提升是巨大。...除了上面的,其他还有些他在成长过程,自己提升优点,比如:XName 和 XNamespace 对象是原子化,如果这两个对象包含相同名字,则它们会引用同一个对象。...没有测试就没有发言权,并不是所有的”懒人技术“都是以牺牲性能为代价。 虽然Linq to SQL名声不大好,但是LINQ to XML却应该是实至名归。

1.1K50

LINQ&EF任我行(二)–LinQ to Object (转)

(原创:灰灰虫家http://hi.baidu.com/grayworm) LinQ to Objects是LinQ家庭核心,其它LinQ也使用了与LinQ to Objects相同查询句法。...最终编译器都是把LinQ句法翻译成扩展方法链式表达式,同时把扩展方法lambda表达式转换成匿名类匿名方法,然后再把查询表达式编译成MSIL。...LinQ to SQL、LinQ to DataSets、LinQ to Entities和LinQ to XML则不是查询表达式转换成MSIL,而是把查询表达式树转换成相应特定查询语言。...LinQ to SQL会生成T-SQL,LinQ to Entities会生成eSQL,LinQ to XML会生成XPath语句等。 LinQ标准查询操作符列表 ?...十三、聚合操作符 聚合操作符类似于SQL聚合函数,所有带有聚合操作符LinQ语句都无延迟功能,会被立即被执行。

2.4K30

ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

一开始,在ASP.NET MVC项目中,右击/Models子目录,选择“添加新项” -> “LINQ to SQL 类”,调出 LINQ to SQL ORM 设计器来对我们数据对象建模: ?...我们定义这些辅助方法有2个原因: 1)避免在我们Controller类中直接嵌入我们LINQ查询,2) 将允许我们在将来更容易地改变我们控制器以使用dependency injection(依赖注入...我们将添加NorthwindDataContext辅助方法是象下面这样: ? 想进一步了解LINQLINQ to SQL的话,请参阅这里LINQ to SQL系列。...上面的视图在页面上方显示了分类名称,然后显示了分类内所有产品项目列表。 在项目列表每个产品旁边,有个 "Edit" 链接。...注意上面,我们在网页上使用了标准 HTML 元素,不是form runat=server。

5.1K70

.NET面试题系列 - LINQ:性能

所以在使用ORM时,如果它用到了IQueryable,请将你查询也写成表达式不是委托形式。...在代码,选择了前100个score(一条SQL),然后对所有score进行遍历,从表Student获得Name值(100条SQL)。 解决方法也在文章给出了,就是将两个表连到一起。...只获得你需要列(使用ViewModel或者改进你查询)和行(使用IQueryable) 尽可能使用一条查询不是多条 只为了展示数据,不进行后续修改时,可以使用AsNoTracking。...自定义ORM 通常,只有在如下情况下才会考虑将自己写ORM投入生产使用: 存在一些特定复杂查询,在项目中广泛出现,此时自己写ORM做了很多优化,表现好于EF 存在一些特定业务逻辑,例如将表达式解析为...例如EF使用了反射,但如果你ORM只用于你开发软件,所有的情况你都可以事先预计,那你也可以不用反射 大部分ORM开发出来目标仅仅是: 令查询语法更加接近SQL 加入了若干语法糖或代码生成快捷方式

2.5K40

应该在项目中使用EF Core吗?

让我们从优点开始,详细介绍图1.11每一个块 最新一代 LINQ to SQL切换到了EF 4,因为EF是未来发展方向,LINQ to SQL不会再投入更多精力....大部分格式正确LINQ查询都可以正常工作,尽管它们可能无法被转换为性能最佳SQL,不过一个正确有效查询代码是一个很好的开始(我们可以再优化)....使用过ADP.NET,LINQ to SQL, EF 4到6以及现在EF Core, 相信这已经是一个很棒O/RM了 但是在编写本书时, EF Core(2.0)仍然有一些功能尚未添加, 这就是图...如果你使用过EF 6.x,你会注意到EF6.x一些功能EF Core还没有,但随着时间推移,这些功能都会添加....这是简便代价: EF Core内部所有的”魔法”都不如手工编写SQL好,但是你可能会惊讶它魔法还是有点料 幸运是我们对此做一些措施.在项目中,发现只有5%到10%查询是需要手动调优关键查询

96440

LINQ to SQL(1):基础入门

LINQ to SQL是在SQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供方式是目前所见到查询SQL SERVER最简单也是最有效方式,他可以使用自定义类型与数据表甚至存储过程进行对应...,不像我们使用ADO.NET那样,把更多功夫用在数据类型转换等等问题上,当程序运行时候,LINQ to SQL会将我们使用自己语言定义模型语言继承查询转换为SQL,然后将他在数据库上执行...,然后将返回结果转换为我们自定义类对象,使用过nhibernate或者ibatis.net朋友,可能就很熟悉这种方式啦,个人认为,LINQ to SQL在某些地方弥补了这两种框架缺陷,而且,如果我们可以在项目中使用...,还并不是我们想要,因为如果我们使用ORM来生成LINQ to SQL模型的话,是没有像GetTable这种东西出现,二十在查询时候,可以直接使用强类型话类对象,那么他是如何实现呢,继续往下看...这里我们已经不需要gettable这种方式啦,这样,我们就实现了一个简单使用ORM设计器实现LINQ to SQL模型,怎么样,LINQ to SQL查询方式,是不是很让人心潮澎湃啊

1.3K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券