首页
学习
活动
专区
圈层
工具
发布

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

主要有三种方式: Database FirstDatabase First”模式 我们称之为“数据库优先”,前提是你的应用已经有相应的数据库,你可以使用EF设计工具根据数据库生成数据数据类,你可以使用Visual...IEnumerable及IEnumerable的泛型版本IEnumerable是一个接口,它只含有一个方法GetEnumerator。...它由Threading in C#和C# in a Nutshell的作者Albahari编写,完全免费。...它的下载地址是http://www.linqpad.net/ 进入界面后,LINQPad可以连接到已经存在的数据库(不过就仅限微软的SQL Server系,如果要连接到其他类型的数据库则需要安装插件...你也可以通过点击橙色圈内的各种不同格式,看到查询表达式的各种不同表达方式: Lambda:查询表达式的Lambda表达式版本, SQL:由编译器转化成的SQL,通常这是我们最关心的部分, IL:IL语言

5.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET面试题系列 - LINQ to Object

    在面试时,大部分面试官都不会让你手写LINQ查询,至少就我来说,写不写得出LINQ的Join并没所谓,反正查了书肯定可以写得出来。但面试官会对你是否理解了LINQ的原理很感兴趣。...LINQPad LINQPad工具是一个很好的LINQ查询可视化工具。它由Threading in C#和C# in a Nutshell的作者Albahari编写,完全免费。...它的下载地址是http://www.linqpad.net/ 进入界面后,LINQPad可以连接到已经存在的数据库(不过就仅限微软的SQL Server系,如果要连接到其他类型的数据库则需要安装插件)。...连接到数据库之后,LINQPad支持使用SQL或C#语句(点标记或查询表达式)进行查询。...你也可以通过点击橙色圈内的各种不同格式,看到查询表达式的各种不同表达方式: Lambda:查询表达式的Lambda表达式版本 SQL:由编译器转化成的SQL,通常这是我们最关心的部分 IL:IL语言 ?

    4.2K20

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

    (给他一个最General类型的返回) SELECT N+1问题 假设你有一个父表(例如:汽车),其关联一个子表,例如轮子(一对多)。...(当然还有很多其他工具,或者最基本的就是用SQL Profiler不过比较麻烦) LINQ to SQL的性能问题 提升从数据库中拿数据的速度,可以参考以下几种方法: 在数据库中的表中定义合适的索引和键...是否存在需要长时间运行的LINQ语句? 是否在数据库上取得数据,并运行LINQ语句?(这意味着存在一个LINQ语句到SQL的表达式转换) 数据规模是否巨大?...当你优化之后,再次在LINQPad上运行看看是否造成了可观的性能提升。 是否需要在数据库上筛选数据,并运行LINQ语句?...使用Reshaper等工具,它可能会在你写出较差的代码时给出提醒。 上MSDN,nuget查询是否已经有了现成的方法(例如获得最后一个元素)。 撰写单元测试来保证你的优化的正确性。

    3.1K40

    用linqPad帮助你快速学习LINQ

    在这里我向大家推荐的一个具是LinqPad有了这个工具并熟练使用就可以很快学习并掌握linq linqPad下载地址:http://www.linqpad.net/ 它也自带了很多例子方便大家查询,linqPad...会给我们同时生成lambda表达式,sql和IL 我一般情况下有linq的lambda不会的时候,就用Linqpad来调试得到结果 打开它的主页面看一下,点AddConnection 就可以添加数据库连接...先在数据库里建一个库MyDataDemo两个表Classes和Student create database MyDataDemo go use MyDataDemo go drop table...的query标签里把Language 选择为c# Expression ,把Connection 选择数据MyDataDemo 就是我们上边建好的数据库如图 ?...给我们显示的结果 sql结果 是判断我们的Linq是不是正确的 看它是left outer join(left join 是Left outer join 和简写) 证明我们是正确的 SELECT [t1

    1.4K60

    .NET轻松写博客园爬虫

    LINQPad运行,可以在这里找到最新的LINQPad下载链接:https://www.linqpad.net/Download.aspx 这些代码同样可以运行在Visual Studio中。...其中.Dump()方法可以在Visual Studio中搜索并安装NuGet包即可兼容: Install-Package LINQPad 爬虫的三要素 经过我“多年”的爬虫骚操作的经验,我认为爬虫无非就是...下载网站数据 换作以前,有WebRequest/WebClient/RestSharp之类的选择,但如今已经都被HttpClient取代了,HttpClient同时内置于.NET Framework 4.5.../netstandard 1.1及以后的版本,不用安装第三方包。...解析网站数据 .NET解析html有多个包可供选择,如HtmlAgilityPack、CsQuery等。但AngleSharp由于其简单好用、功能强大,已经也成为解析html的不错之选。

    1K20

    微软发布TX(LINQ To Logs And Traces)

    下面是几个引人关注的功能—— 允许在原始事件源上使用LINQ 允许在真实事件源上使用“反应式扩展框架(Reactive Extensions)”,而且支持事件序列的多路复用(单个包含不同类型事件的序列,...其中事件的顺序为其发生顺序)。...可以提供跨多个事件源的单一查询,而且用于实时查询和过去历史查询的API相同。...开发人员可以将LINQPad用于一次性分析,也可以用于构建监控用的.NET应用程序。在LINQPad中,Tx给人一种所有的事件都在数据库中的感觉。...该版本提供了四个不同的NuGet包: Tx.Core——不针对特定跟踪格式的通用组件 Tx.Windows——支持Windows上的事件跟踪:事件日志、文件中的性能计数器和实时计数器API、W3C格式的

    1K60

    做好毫秒级的C#执行器要考虑哪些因素?

    一开始我看到.NET 10.0新版本有单文件执行功能,感觉可能有希望,我试了一下: 先写了一个 hello-world.cs: Console.WriteLine("Hello World"); 是的...)——但无论如何,LINQPad 里面执行代码几乎是无感的,这是为什么呢?...—— 因为 dotnet run 是基于 msbuild 的,但 LINQPad 是基于 Roslyn Scripting API 的,而且启动 LINQPad.exe 后,进程常驻,CLR 已经加载完毕...——当然不能,因为我上面说了,我对这个速度的期望是毫秒级的,而大语言模型的实际响应速度可能是分钟级的,除此之外有些隐藏比较深的代码我觉得大语言模型不一定能“看”得出来有危险。...目前就是这样,明天继续看,感谢大家看到这里,有兴趣的朋友欢迎大家加入我的《.NET骚操作》QQ群:495782587

    11110

    Succinctly 中文系列教程(三)20220109 更新

    四、使用信号量访问共享数据 五、单元测试和异步等待 Succinctly Azure CosmosDB 教程 零、简介 一、文档数据库基础 二、使用文档数据库的第一步 三、使用文档数据库的查询 四、...Docker 八、在云上运行 Docker 九、继续你的 Docker 之旅 Succinctly EF 核心教程 零、简介 一、配置 二、数据库 四、向数据库写入数据 三、从数据库获取数据 五、日志...二、安装 LINQPad 三、从 LINQPad 开始 四、LINQPad 基础 五、使用 LINQ-To-SQL 查询数据库 六、作为代码草稿本的 LINQPad 七、总结 八、关于 LINQPad...探索集成开发环境 三、调试应用 四、创建 .NET 核心应用 五、创建 Xamarin 项目 六、将 Git 用于版本控制 七、为 Mac 定制和扩展 Visual Studio Succinctly...二、布局 三、颜色 四、助手类 五、容器 六、视觉元素 七、正文 八、菜单 九、表格和列表 十、按钮和标签 十一、表单 十二、动画 十三、模态对话框 十四、图像 十五、 W3CSS 示例代码 十六、版本

    20.1K20

    .NET如何生成大量随机数据

    出处:本文转载于微信公众号【DotNet骚操作】,作者【周杰DotNet 】 前言 在演示Demo、数据库脱敏、性能测试中,有时需要生成大量随机数据。...Bogus就是.NET中优秀的高性能、合理、支持多语言的随机数据生成库。 Bogus的Github链接:https://github.com/bchavez/Bogus,图标如下: ?...安装Bogus 目前Bogus最新版是28.0.2,本文演示基本该版本,不保证官方以后会不会修改本文的使用方式。...(代码使用LINQPad运行,可以几乎复制到Visual Studio中运行,效果一样,其中.Dump()是LINQPad特有方法): void Main() { var userGenerator...这些规则是通过.RuleFor()第二个回调的第二个字段来决定的: .RuleFor(x => x.FirstName, (x, u) => x.Name.FirstName(u.Gender)) //

    1.3K40

    工具分享|分享几个在线SQL可执行网站(下)

    分享是一件很有意思的事情,或许有那么一些好题好方法,你的收藏夹是否起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!...【官网地址】:JDoodle【需要注册】:否【建议收藏】:注意⚠️:JDoodle支持的数据库版本有: SQLite 3.9.2、SQLite 3.21.0、SQLite 3.23.1、SQLite 3.29.0...、SQLite 3.37.0,关于其他版本是否支持,大家可以看下网站的源码。...【官网地址】:SQLiteOnline【需要注册】:是【建议收藏】: 1.9 db4free.netdb4free.net 提供最新版本、甚至是开发者版本的 MySQL 服务器测试服务。...总结有些时候,我们想去验证一些 SQL语句是否正确或者在线测试SQL语句是否准确,再或者在线考试没有提供语句环境时,但又懒得去安装数据库环境,那该怎么办呢?

    2.3K30

    移动客户端中高效使用 SQLite

    好在我们可以利用 SQLite,在内部用一张 meta 表专门用于记录数据库的当前版本号、最低兼容版本号等信息。用好了这张表,我们就可以对数据库是否需要升级、升级的路径进行规范。...V1 版本的数据库需要通过 ALTER 操作增加两列后使用。记得升级完毕后要更新数据库的版本。代码如下 ? c. V3 版本发现出生日期与年龄两个字段有重复,冗余的数据会带来数据库体积的增加。...希望 V3 数据库能够只保留出生日期字段。我们依然从 meta 读取数据库版本号信息。不过这次需要注意的是直到 SQLite 3.9.10 版本并没有删掉一列的操作。...从外存读取索引表的一个节点到内存,再在内存判断这个节点是否有对应的 key(或者判断节点是否需要合并或分裂)。而统计研究表明,外存中获取下一个节点的耗时比内存中各项操作的耗时多好几个数量级。...而这时往往逻辑会要求用新的数据代替数据库已存在的老数据。曾经老版本的 SQLite 只能通过先 SELECT 查询插入数据主键对应的行是否存在,不存在才能 INSERT,否则只能调用 UPDATE。

    5.9K70

    【Dev Club 分享】微信 iOS SQLite 源码优化实践

    下次数据库打开时, SQLite 会识别到 WAL 文件不可用,重新从头开始写入。 为 WAL 添加 mmap 的支持 有了上面两个优化,整体性能就会提升不少了。...因此我们可以直接注释掉 os_unix.c 中所有文件锁相关的操作。也许你会很奇怪,虽然没有文件锁的需求,但这个操作耗时也很短,是否有必要特意优化呢?其实并不全然。耗时多少是比出来。...或者说不同版本的跳版本升级 不知道这个问题指的是 SQLite 的升级还是表结构的升级。前者的话,暂时没看到 SQLite 新版本有比较大的特性值得我们跟进。...后者可以用 alter table 在封装层支持升级,性能损耗不大 Q15 :请问微信的 SQLite 有没有开启加密?如果有,性能是否有提升空间?...iOS 版本目前没有开启加密 Q16 :微信 sqllite 数据库用的内存数据库吗?那和文件数据库导入导出怎么控制的?

    1.7K80

    应当使用 SQLite 的五个原因

    SQLite 是非常优秀的数据库,能够在真实的生产环境中完成一些真正的工作。本文将列出五个我认为在2016年应当选用 SQLite 的原因。 便于管理 不知你是否管理过 Postgres 数据库?...SQLite 便于管理——只有单个文件(有时候是一个文件+事务日志),这个文件的格式在多个主要版本中都是通用的,也就是说如果我有一个3.0.0版本(2004年)的 SQLite 数据库文件,便可以在最新的...除了新增功能之外,SQLite 的开发者也在努力改进 library 的性能,在3.8.11版本的发布说明中,包含这些宣传内容: 新版本 SQLite,运行速度是3.8.0版本的两倍,是3.3.9版本的三倍...通过快速写入数据,只有当有大量的并发写入时,数据库锁定才会成为问题。 WAL模式 SQLite 的3.7.0发布版增加了新的日志记录方法:使用预写日志。...额外的原因:BerkeleyDB 由于只需锁定单独页面,而无需锁定整个数据库,集成了 SQLite 的 BerkeleyDB 可以给需求数据库并发访问的应用开发者有更好的体验。

    2.3K80

    android开发之使用SQLite数据库存储

    这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。...onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。...调用 getReadableDatabase() 或 getWriteableDatabase() 方法,你可以得到 SQLiteDatabase 实例,具体调用那个方法,取决于你是否需要改变数据库的内容...查询数据库 类似 INSERT, UPDATE, DELETE,有两种方法使用 SELECT 从 SQLite 数据库检索数据。...'", null); 在上面例子中,我们查询 SQLite 系统表(sqlite_master)检查 table 表是否存在。

    3.1K20
    领券