C# LINQ基础

LINQ基础

  • 1. 入门
  • 2. 运算符流语法
    • 2.1 连续使用查询运算符
    • 2.2 使用Lambda表达式
      • 2.2.1 Lambda表达式及Func的方法签名
      • 2.2.2 Lambda表达式和元素类型
      • 2.2.3 自然排序
      • 2.2.4 其他查询运算符
  • 3 查询表达式
  • 4 延迟执行
    • 4.1 重复执行
    • 4.2 捕获的变量
    • 4.3 延迟加载的工作原理
    • 4.4 查询语句的执行方式
  • 5 子查询
  • 6 LINQ构造方式
  • 7 映射策略
  • 8 解释性查询
  • 9 LINQ to SQL 和 EF的区别
  • 10 查询表达式的创建
  • 委托、匿名方法、Lambda表达式
  • 11 自定义一个运算符,了解原理

本篇文章所有内容均来源于书籍《果壳中的C#》,本博客用于复习知识、分享知识使用。

1. 入门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 运算符流语法

2.1 连续使用查询运算符

在这里插入图片描述

2.2 使用Lambda表达式

在这里插入图片描述
在这里插入图片描述

2.2.1 Lambda表达式及Func的方法签名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 Lambda表达式和元素类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.3 自然排序

在这里插入图片描述

2.2.4 其他查询运算符

在这里插入图片描述
在这里插入图片描述

3 查询表达式

博主不使用该方式,书籍内的大多数知识直接忽略
在这里插入图片描述
在这里插入图片描述

4 延迟执行

在这里插入图片描述
在这里插入图片描述

4.1 重复执行

在这里插入图片描述
在这里插入图片描述

4.2 捕获的变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 延迟加载的工作原理

TODO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.4 查询语句的执行方式

在这里插入图片描述
在这里插入图片描述

5 子查询

6 LINQ构造方式

7 映射策略

8 解释性查询

9 LINQ to SQL 和 EF的区别

10 查询表达式的创建

委托、匿名方法、Lambda表达式

委托:指向函数的类型(自定义,Action,Func)
匿名方法:没有方法名的方法(delegate)
lambda表达式:匿名方法可简化为lambda表达式,并且可以推断出类型

11 自定义一个运算符,了解原理

实现查找大于10的所有数

        static void Main(string[] args){int[] nums = new int[] { 15,1,5,155,441,56};var res = nums.MyWhere(p => p > 20);foreach (int i in res) {Console.WriteLine(i);};//查找大于10的所有数nums.Where(t => t > 10).ToList().ForEach(Console.WriteLine);Console.ReadKey();}public static class MyLinq{public static IEnumerable<T> MyWhere<T>(this IEnumerable<T> t,Func<T,bool> action) {//List<T> list = new List<T>();foreach (var item in t) {if (action(item)){Console.WriteLine("MyWhere:"+item);//list.Add(item);yield return item;}}//return list;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【思考】crud接口命名规范

写代码时取名字真的是痛苦。 方法命名 1、阿里命名规范 Service/Dao 层命名规约 1&#xff09; 获取单个对象的方法用 get 做前缀。 2&#xff09; 获取多个对象的方法用 list 做前缀。 3&#xff09; 获取统计值的方法用 count 做前缀。 4&#xff09; 插入的方法用 save&am…

c++ 11 新特性 不同数据类型之间转换函数之const_cast

一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符&#xff0c;用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性&#xff0c;它是唯一具有此能力的C风格的转型操作符。在C11中&#xff0c;const_cast可以完成…

李子柒的精致生活只是一种文人想象

社会运行有两种基本的赚钱方式&#xff1a;1.做出有意义的社会贡献&#xff0c;获得与贡献的社会价值相称的报酬。劳动时间与劳动价值同酬。2.利用市场的无效率&#xff0c;在不产生任何实质价值的情况下摘取资金。劳动时间与劳动价值不同酬。 找一份工作、从事有用的工作、编…

【经验】测试工装排错小结

最近在整产品测试工装&#xff0c;看起来很简单的几项检测功能&#xff0c;前后也就几百行代码&#xff0c;但是却花了两周时间将功能调试出来&#xff0c;过程可谓一波三折&#xff0c;现总结如下。 1&#xff1a;对于电源控制类的检测&#xff0c;最好考虑下电平稳定时间。 …

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…

RBAC详细解释

关于RBAC **RBAC** **R**ole **B**ased **A**ccess **C**ontrol&#xff08;基于角色的访问控制&#xff09; RBAC是经典的用户权限管理的设计思路。在这样的设计中&#xff0c;会存在3种类型&#xff1a;用户、角色、权限&#xff0c;权限将分配到各种角色上&#xff0c;用户…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑净负荷均衡的分布式光伏集群电压调控策略研究》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

遗传算法理解与代码实战(二)- demo(python+deap)

前文介绍了遗传算法&#xff0c;并且手动python代码进行了实践&#xff0c;但是在遇到复杂的问题时&#xff08;遗传算法理解与代码实战&#xff08;三&#xff09;会介绍&#xff09;&#xff0c;手写代码很麻烦&#xff0c;所以需要借助专门的遗传算法库来实现&#xff0c;这…

使用IAD电话交换机(语音网关)将电话外线对接到FreeSWITCH SIP服务器

在我们初步了解了FreeSWITCH这样的SIP服务器之后&#xff0c;常见的一个需求就是把真实的电信世界&#xff08;比如固话、手机&#xff09;对接到SIP服务器里。 今天我们就介绍一个简单的方法&#xff0c;在3分钟内就把电信局和你的SIP软交换机融合通信起来。 IAD和SIP服务器环…

Superset二次开发之Superset架构理解

技术框架 框架作用 前端 React构建用户界面的 JavaScript 库ReduxJavaScript 应用的状态管理库,管理组件间的状态共享Webpack前端资源打包工具BabelJavaScript 编译器D3.js数据可视化的 JavaScript 库后端 Flask轻量级的 Python web 框架,处理 HTTP 请求、路由以及其他 Web 服…

搜维尔科技:动作捕捉与数字时尚:Wondar Studios欧莱雅项目

来自意大利的Wondar Studios工作室&#xff0c;是一家制作与动作捕捉技术相关软件和内容的公司&#xff0c;其出品的三维角色动画均由专业动捕系统真实录制制作。 我们很高兴与大家分享Wondar Studios最新的动捕项目&#xff0c;该项目带来了身临其境的虚拟现实体验。他们与巴…

AI新工具 MacOS 翻译提供翻译、润色和语法修改功能的插件;AI生成 Excel公式;Deepmind前华人员工创建视频生成工具

1: OpenAI Translator Bob Plugin macOS 平台的翻译提供翻译、润色和语法修改功能的插件 OpenAI Translator Bob Plugin是一款基于OpenAI的API&#xff0c;为用户提供翻译、润色和语法修改功能的插件。这款插件专门为macOS平台上的Bob软件设计&#xff0c;通过使用先进的Chat…

fork属性的作用

在Maven中&#xff0c;fork属性是maven-compiler-plugin插件的一个配置选项。它的作用是控制是否为编译过程启动一个新的进程。当fork设置为true时&#xff0c;Maven将启动一个新的进程来执行编译&#xff0c;这允许你在本地的Java编译器之外使用其他Java编译器&#xff0c;例如…

矩阵键盘中为什么有键位并联二极管?

矩阵键盘上使用二极管主要是为了解决“幽灵键”&#xff08;Ghosting&#xff09;和“键盘冲突”&#xff08;Key Jamming&#xff09;问题&#xff0c;这两种现象在没有采取适当措施的矩阵键盘中很常见。 幽灵键现象 当用户在矩阵键盘上同时按下多个键时&#xff0c;由于电流…

笔试刷题记录(二)

数值操作类型转换 class CompareReference{public static void main(String [] args){float f42.0f;float f1[]new float[2];float f2[]new float[2];float[] f3f1;long x42;f1[0]42.0f;} }A f1f2 B xf1[0] C f1f3 D f2f1[1]BC正确&#xff0c;选项B解释&#xff0c;java核…

如何定义resultType和resultMap,它们之间的区别是什么?解释一下<parameterType>的作用和用法。

在MyBatis中&#xff0c;resultType和resultMap都用于将数据库查询结果映射到Java对象&#xff0c;但它们在使用方式和灵活性上有一些区别。 resultType resultType是一个简单的类型别名&#xff0c;它用于指定查询结果应该映射到的Java类型。当数据库表中的列名和Java对象的属…

设计模式-建造者模式实践案例

建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。当一个对象需要多个部分或许多步骤来创建&#xff0c;并且需要将创建过程与表示分离时&#xff0c;建造者模式非常有用。建造者模式旨在找到一个解决方案&…

C#使用泛型自定义的方法设计队列CQueue<T>类

目录 一、涉及到的知识点 1.C#中的队列类 2.自定义队列的方法 &#xff08;1&#xff09;先设计一个CList<T>类 &#xff08;2&#xff09;再设计CQueue<T>类 二、自定义队列CQueue<T>类的实例 一、涉及到的知识点 1.C#中的队列类 在C#中实现队列类&a…

数据仓库实战 第一讲

第一节 数据仓库的定义 数据仓库的优势 面向主题集成相对稳定反映历史变化 数据仓库的架构 特点 简单通过暂存区简化数据准备星型结构沙盒 &#xff08;提供专用安全区域&#xff09; 云数据仓库 特点 弹性&#xff08;高扩展性能&#xff09;简单易用易于管理节约成本…

线性代数的学习路线

线性代数是数学的一个重要分支&#xff0c;它主要研究向量空间和线性映射。学习线性代数的线索可以从以下几个关键点展开&#xff1a; 向量的内积&#xff1a;了解向量的内积概念&#xff0c;它是衡量两个向量之间关系的一种方式&#xff0c;可以用来计算向量的长度和角度。矩…