首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

Code FirstCode First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。...一般来说,返回另外一个序列(通常为IEnumerable或IQueryable)的操作,使用延迟执行,而返回单一值的运算,使用立即执行。...LINQPad支持使用SQLC#语句(点标记或查询表达式)进行查询。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。...LINQ to Object的数据源总是实现IEnumerable(所以不如叫做LINQ to IEnumerable),相对的,LINQ to SQL的数据源总是实现IQueryable使用Queryable

4K30

Entity Framework 的一些性能建议

因此使用微信重新推送,希望能帮到大家。 自从我用了EF,每次都很关心是否有潜在的性能问题。所以每次我写LINQ查询,都会使用SQL Profiler看一下实际生成的SQL语句,以便发现潜在的性能问题。...IQueryable, IEnumerable 在这两个接口的选择上,我偏向使用IQueryable。...大部分时候这两个接口在使用上的表现都是一致的,但如果你要做的是一个不确定的查询,意思是这个查询表达式不是一次性确定的,对于它的结果可能由别的类来选择到底select哪些东西,这时候就要用IQueryable...所以文章一开始我就建议大家多用SQL Profiler看看自己的LINQ是怎么执行的。 如果把返回类型换成IQueryable,那么你的where语句就可以转化为SQL执行。...如果要让代码尽量去生成LINQ to SQL,有个很简单的原则,就是尽量用LINQ、Lambda表达式,这样EF才可能帮我们翻译。C#里的Count有两种。

1.7K30

【源码解读(二)】EFCORE源码解读之查询都做了什么以及如何自定义批量插入

引言     书接上回,【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截 ,在上一篇文章中,主要讲了DBContext的构造函数,以及如何缓存查询方法提升查询性能,还有最重要的拦截查询...entityParameter); } else { // This path handles properties that exist only on proxy types...public static IQueryable Take(this IQueryable source!!.... /// public virtual IQueryable CreateQuery(Expression expression) => (IQueryable...如何自定义批量增删改查替换自带的     在以前记得使用批量插入的时候,总觉得EF自带的很慢,3.1的时候用的,到现在都这么久了,不知道提升性能了没得,不过它的内部依旧和我写的例子 原理差不多,内部开启一个事物

30750

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

LINQ的链式模型主要用在了查询对象集合上,通过大面积构建扩展方法让对象充满可以使用的LINQ表达式所对应的查询方法。 那么我们如何来理解LINQ的查询呢?...第二种是使用LINQ查询表达式查询数据。毋庸置疑肯定是LINQ方便,简单方便更符合我们习惯的SQL查询方式。 这样我们就可以很轻松的得出一个筛选过后的对象。...在使用IEnumerable和IQueryable之间的区别是什么?如何很好的理解这两者在LINQ的整个框架中的关系。...2.4.深入IQueryableIQueryable、Queryable(LINQ to Provider框架的入口) IQueryable接口是提供给我们来实现自定义数据源用的,为了支持强类型的数据源集合我们直接使用...IQueryable接口,当我们使用LINQ来查询IQueryable接口时查询表达式会被直接编译成对应的Queryable静态类中的对应的静态扩展方法。

2K30

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这种东西出现的,二十在查询的时候,可以直接使用强类型话的类对象,那么他是如何实现的呢,继续往下看 在Customer.cs中命名空间下添加如下代码...var,在这里,其实它是一个实现了IQueryable接口的一个对象 这里我们已经不需要gettable这种方式啦,这样,我们就实现了一个简单的使用ORM设计器实现的LINQ to SQL模型,怎么样,

1.3K60

C#内建接口:IQueryable

这节来讲一下C#中的内建接口:IQueryableIQueryable是 IEnumerable 接口的子接口,相比之下提供了更丰富的查询功能。...强类型查询:IQueryable 接口允许我们使用强类型的查询表达式,利用编译器的类型检查来捕获错误和提供智能感知。...在 C# 中,常用的查询提供者是 Entity Framework(EF),它可以将 IQueryable 查询转换为适当的 SQL 查询语句,并与数据库进行交互以获取结果。...总结而言,IQueryable 接口是在 C# 中用于表示可查询数据源的接口,它提供了延迟查询的能力、强类型的查询表达式、查询提供者和查询优化等特性。...历史文章: C#内建接口:IEnumerable C#内建接口:IEquatable泛型

23510

C#3.0新增功能09 LINQ 基础02 LINQ 查询简介

可以使用相同的基本编码模式来查询和转换 XML 文档、SQL 数据库、ADO.NET 数据集、.NET 集合中的数据以及 LINQ 提供程序可用的任何其他格式的数据。...,首先在 Visual Studio 中手动或使用 Visual Studio 中的 LINQ to SQL 工具在设计时创建对象关系映射。...下例中,Customers 表示数据库中的特定表,而查询结果的类型 IQueryable 派生自 IEnumerable。...有关详细信息,请参阅如何使用 LINQ 查询 ArrayList (C#)。 查询 查询指定要从数据源中检索的信息。 查询还可以指定在返回这些信息之前如何对其进行排序、分组和结构化。...有关在后台如何构造查询的详细信息,请参阅标准查询运算符概述 (C#)。 还可以使用方法语法来表示查询。 有关详细信息,请参阅 LINQ 中的查询语法和方法语法。

3.5K30

.NET面试题系列 - LINQ to SQLIQueryable

LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。...大家可以使用EF或其他方式。...可以得出正确的结果(test只有1笔输出),但使用自己的查询提供器,获得的SQL却是错误的(第一个Sex = M不见了)。...不过,我在这里就仅以此为例,解释下如何扩展并为表达式树解析增加更多的功能,使之可以应付更多类型的表达式。 IQueryable与 IEnumerable的异同?...首先IQueryable是解析一棵树,IEnumerable则是使用委托。前者的手动实现上面已经讲解了(最基本的情况),而后者你完全可以用泛型委托来实现。

1.6K10

在Visual Studio中查看EF Core查询计划

16个值得推荐的.NET ORM框架 .NET ORM框架使用情况统计 EFCore.Visualizer工具介绍 C#开源的一款EF Core查询计划调试器可视化工具。...支持数据库 目前只支持以下两个数据库: SQL Server PostgreSQL 注意环境和版本(重要) EFCore.Visualizer工具需要Visual Studio 17.9.0版或更新版本...注意注意(很多同学不显示Query Plan Visualizer按钮的原因):该插件只支持检查IQueryable变量,不支持List变量,只有IQueryable变量才会展示Query Plan Visualizer...SQL Server: PostgreSQL: Visual Studio更多实用技巧 https://github.com/YSGStudyHards/DotNetGuide 项目源码地址 更多项目实用功能和特性欢迎前往项目开源地址查看...C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。

13010

在VS中调试LINQ(Lambda)

注意 不能调试LINQ to SQL,因为LINQ to SQL是翻译成sql语句了。...参考 如何C#中调试LINQ查询:https://michaelscodingspot.com/debug-linq-in-csharp/ C#中的条件断点:https://www.c-sharpcorner.com...C#中调试LINQ查询:https://michaelscodingspot.com/debug-linq-in-csharp/ 扩展 如何知道每一步链式调用的结果 如何知道每一步链式调用的结果?...使用OzCode VS插件OzCode很强大,每一个Linq语句的执行结果都能统计并展示出来,详情参考:如何C#中调试LINQ查询 和 如何C#中调试LINQ查询 使用LinqPad LinqPad...软件很强大,不过数据源是个问题,操作步骤参考:如何C#中调试LINQ查询 和 如何C#中调试LINQ查询 参考 2017年调试LINQ:LINQPad与OzCode:https://oz-code.com

4.6K30

C#3.0新增功能09 LINQ 基础01 语言集成查询

使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。...C# 和 Visual Basic 针对 SQL Server 数据库编写的不完整 LINQ 查询,并具有完全类型检查和 IntelliSense 支持: ?...例如,通过一个查询即可检索 SQL 数据库中的数据,并生成 XML 流作为输出。 查询表达式易于掌握,因为使用了许多熟悉的 C# 语言构造。...在编译时,查询表达式根据 C# 规范规则转换成标准查询运算符方法调用。 可使用查询语法表示的任何查询都可以使用方法语法进行表示。 不过,在大多数情况下,查询语法的可读性更高,也更为简洁。...IQueryableIQueryable 查询编译为表达式树。 有关详细信息,请参阅表达式树。

1.8K10

入门:构建简单的Web API

这个入门文章主要演示在ASP.NET MVC3网站宿主: 如何使用NuGet向项目中添加Web Api引用 如何创建一个通过HTTP GET访问的Web Api 如何通过asp.net routes...通过一个HTTP Get 方法暴露contacts:首先创建一个poco(Plain Old C#)Contract类,代表我们在api上传递的联系人,本质上就是一个DTO(数据传输对象),在HTTP上我们把它作为资源...Web api返回的响应很容易添加一种媒体类型(media types )。...查询使用IQueryable 接口,服务端并没有去查询所有的数据,发送过滤和排序到服务端。...总结 通过这个Quick start,我们学习到了以下内容 如何使用NuGet向项目中添加Web Api引用 如何创建一个通过HTTP GET访问的Web Api 如何通过asp.net routes

3.1K90

.NET3.5新特性,Lambda表达式

然后,我示范了你可以如何使用一些值来生成一个List集合的实例,然后使用由LINQ提供的新的Where和Average扩展方法来返回集合中的人的一个子集,以及计算这个集合中的人的平均年龄...但考虑一下你想要查询数据库里的数据的情形(下面的代码是使用Orcas中内置的LINQ到SQL对象关系映射器写成的) : ?...IQueryable 接口 为 帮助框架开发人员建立可查询的数据提供器,LINQ提供了 IQueryable 接口。...想阅读一些关于如何使用 IQueryable 来建立自定义的LINQ数据提供器的精彩博客系列的话,请看一下下面这些别人写的精彩博客贴子: LINQ to Amazon: Part 1, Part...to NHibernate: Part 1, Part 2, Part 3 LINQ to LDAP: Part 1, Part 2, Part 3, Part 4 结语 希 望上面的贴子内容对如何考虑和使用

1.7K80
领券