C# 匿名方法、Lambda、Linq概念及联系
匿名方法、Lambda表达式与LINQ
匿名方法
概念:
匿名方法是没有名称的方法实现,通常与委托关联使用。它提供了一种在不创建独立命名方法的情况下编写代码块的方式。
语法:
delegate void MyDelegate(string message);MyDelegate del = delegate(string msg) {Console.WriteLine(msg);
};del("Hello from anonymous method!");
特点:
- 必须明确指定参数类型(除非使用
var关键字,但var在这里不适用于委托类型)。 - 适用于简单的委托调用,但代码较为冗长。
Lambda表达式
概念:
Lambda表达式提供了一种更简洁的方式来编写匿名方法。它从C# 3.0开始引入。
语法:
// 推断参数类型
Action<string> lambdaImplicit = msg => Console.WriteLine(msg);// 明确参数类型
Action<string> lambdaExplicit = (string msg) => Console.WriteLine(msg);lambdaImplicit("Hello from lambda expression (implicit type)!");
lambdaExplicit("Hello from lambda expression (explicit type)!");
特点:
- 允许推断参数类型,使代码更简洁。
- 可以是单个表达式或语句块。
- 通常比匿名方法更简洁易读。
LINQ
概念:
LINQ(Language Integrated Query)是一种强大的查询功能,允许以声明性方式查询和操作各种数据源(如数组、集合、XML、数据库等)。
语法示例(使用Lambda表达式):
using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 使用LINQ和Lambda表达式查询偶数var evenNumbers = numbers.Where(n => n % 2 == 0).OrderBy(n => n).Select(n => n * 2).ToList();// 打印结果evenNumbers.ForEach(n => Console.WriteLine(n));// 另一个LINQ示例:分组和聚合var groupedNumbers = numbers.GroupBy(n => n % 3).Select(group => new { Key = group.Key, Count = group.Count() }).ToList();groupedNumbers.ForEach(group => Console.WriteLine($"Key: {group.Key}, Count: {group.Count}"));}
}
LINQ与Lambda表达式的结合:
在上述示例中,LINQ查询与Lambda表达式紧密结合,用于筛选(Where)、排序(OrderBy)、转换(Select)和分组(GroupBy)数据。Lambda表达式作为参数传递给LINQ方法,提供了灵活且强大的查询能力。
三者之间的区别
- 匿名方法:必须明确指定参数类型(或使用
var,但不适用于委托),代码较为冗长。 - Lambda表达式:允许参数类型推断,支持单个表达式或语句块,代码更简洁。
- LINQ:一种查询功能,允许使用Lambda表达式(或其他方式)以声明性方式查询和操作数据源。LINQ本身不是语言特性,而是一组扩展方法,可以与Lambda表达式等结合使用,实现复杂的查询逻辑。
关于linq的具体用法参考另一篇文章:Linq用法
相关文章:
C# 匿名方法、Lambda、Linq概念及联系
匿名方法、Lambda表达式与LINQ 匿名方法 概念: 匿名方法是没有名称的方法实现,通常与委托关联使用。它提供了一种在不创建独立命名方法的情况下编写代码块的方式。 语法: delegate void MyDelegate(string message);MyDelegate del dele…...
django ninja get not allowed 能用 put delete
遇到一个奇怪的问题,django-ninja 编写的 get post 方法不能使用 # 获取Material router.get(/material, responseList[MaterialSchemaOut]) paginate(MyPagination) def list_material(request, filters: Filters Query(...)):qs retrieve(request, Material, f…...
服务器操作集合
服务器使用PC作为代理访问外网 1、PC上启动代理,比如nginx 下载nginx:http://nginx.org/en/download.html 修改配置文件,在conf下: http {include mime.types;default_type application/octet-stream;sendfile o…...
论文阅读【时空+大模型】ST-LLM(MDM2024)
论文阅读【时空大模型】ST-LLM(MDM2024) 论文链接:Spatial-Temporal Large Language Model for Traffic Prediction 代码仓库:https://github.com/ChenxiLiu-HNU/ST-LLM 发表于MDM2024(Mobile Data Management…...
【linux基础】linux远程传输三种免交互方式
linux远程传输三种免交互方式 文章目录 linux远程传输三种免交互方式1、使用sshpass工具2、使用expect脚本来输入密码3、SSH 密钥对 1、使用sshpass工具 建立信任关系的做法是最方便和安全的做法,但是在有些场景下(比如远端的authorized_keys是不能随意更改的)&…...
MySQL篇:事务
1.四大特性 首先,事务的四大特性:ACID(原子性,一致性,隔离性,持久性) 在InnoDB引擎中,是怎么来保证这四个特性的呢? 持久性是通过 redo log (重做日志&…...
处理在 electron 中使用开启了懒加载的 el-image 后,窗口最大化或窗口尺寸变化后图片无法显示的问题
文章目录 1、问题描述2、详情动图3、解决思路4、解决方案5、效果展示 1、问题描述 在 electron 中使用 el-image 时,开启了懒加载后,发现只有当窗口滚动后,图片才会显示,即便图片已经处于窗口的可视区域。当拖动窗口使其尺寸变大…...
Electron 进程间通信
文章目录 渲染进程到主进程(单向)渲染进程到主进程(双向)主进程到渲染进程 (单向,可模拟双向) 渲染进程到主进程(单向) send (render 发送)on &a…...
0基础学python-8:if,while,for
目录 前言: 一、选择循环结构 1.if条件语句 2.while 3.for循环 4.break语句 5.continue语句 前言: if、while 和 for 是 Python 中常用的控制流结构,它们分别用于条件判断、循环执行和迭代遍历。这些关键字帮助程序根据条件和数据进行选…...
低空经济持续发热,无人机培训考证就业市场及前景剖析
随着科技的不断进步和社会需求的日益增长,低空经济已成为全球及我国经济增长的新引擎。作为低空经济的重要组成部分,无人机技术因其广泛的应用领域和显著的经济效益,受到了社会各界的广泛关注。为满足市场对无人机人才的需求,无人…...
[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)
文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包,反编译class,新建java源文件,修改代码,再编译成class,替换jar包内的class文件。 现在…...
JavaScript系列:JS实现复制粘贴文字以及图片
文章目录 一. 基于 Clipboard API 复制文字(推荐)基本概念主要方法使用限制实际应用示例 二、基于 document.execCommand(copy)缺陷实际应用示例说明 三、复制图片功能四、封装 一. 基于 Clipboard API 复制文字(推荐) 基本概念 …...
音视频入门基础:H.264专题(14)——计算视频帧率的公式
一、引言 通过FFmpeg命令可以获取到H.264裸流文件的视频帧率: 在vlc中也可以获取到视频帧率(vlc底层也使用了FFmpeg进行解码): 所以FFmpeg和vlc是怎样获取到H.264编码的视频的帧率呢?它们其实是通过SPS中的VUI parame…...
LeetCode-返回链表倒数第K个节点、链表的回文结构,相交链表
一、返回链表倒数第k个节点 . - 力扣(LeetCode) 本体思路参展寻找中间节点的方法,寻找中间节点是定义快慢指针,快指针每次走两步,慢指针每次走一步,当快指针为空或者快指针的下一个节点是空时,…...
Linux 网络配置与连接
一、网络配置 1.1 ifconfig 网卡配置查询 ifconfig #查看所有启动的网络接口信息 ifconfig 指定的网卡 #查看指定网络接口信息 1.2 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #ens33网络配置文…...
5. 基于Embedding实现超越elasticsearch高级搜索
Embedding介绍 Embedding是向量的意思,向量可以理解为平面坐标中的一个坐标点(x,y),在编程领域,一个二维向量就是一个大小为float类型的数组。也可以用三维坐标系中的向量表示一个空间中的点。在机器学习中,向量通常用于表示数据的特征。 向量…...
探索Docker网络配置和管理
目录 1.docker网络类型有几种? 2.自定义网络管理 1.查看网络信息 2.查看网络的详细信息 3.创建四种网络容器 3.none类型 1.验证 4.host类型 1.验证 5. bridge类型 1.验证 2.设备对 6. container类型 1.验证 2.详解 7.科普下docker的网络名称空间 “…...
【数据库】 mysql数据库管理工具 Navicat平替工具 免费开源数据库管理工具
一、数据库分享 本次分享针对mysql的数据库管理工具 全部为开源免费工具 1、beekeeper-studio 可以从github或者官方下载 1.1、官方网址 官方地址:https://www.beekeeperstudio.io/ 1.2、Github 网址 Github地址:https://github.com/beekeeper-studio…...
信息系统项目管理师(高项)—学习笔记二
第一章 以下是上一篇(信息系统项目管理师(高项)—学习笔记)的续写,因为是之前记录的,这一篇还是细致到每一个小节的内容,有些过于复杂了,后续会简化~ 1.3 现代化创新发展 党的十九…...
【Vue】 style中的scoped
一、什么是scoped,为什么要用 在vue文件中的style标签上,有一个特殊的属性:scoped。 当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染…...
**光计算驱动下的编程新范式:用Python探索光子芯片加速的AI推理**在传统电子计算面临物理极限
光计算驱动下的编程新范式:用Python探索光子芯片加速的AI推理 在传统电子计算面临物理极限的今天,**光计算(Photonic Computing)**正从实验室走向产业化落地。它利用光子替代电子进行信息传输和处理,具备超低功耗、超…...
embeddinggemma-300m部署案例:Ollama服务化后接入低代码平台调用
embeddinggemma-300m部署案例:Ollama服务化后接入低代码平台调用 1. 环境准备与Ollama部署 在开始部署embeddinggemma-300m之前,我们需要先准备好基础环境。Ollama是一个强大的本地大模型运行框架,能够让我们在个人电脑上轻松部署和运行各种…...
【技术干货】Gemma 4 全面实战:从高效推理到本地 Agent 工作流落地指南
【技术干货】Gemma 4 全面实战:从高效推理到本地 Agent 工作流落地指南摘要 本文围绕 Google 新一代开源模型家族 Gemma 4,系统解析其架构特点、推理效率、Agent 工作流与本地部署能力。结合实际开发场景,给出基于兼容 OpenAI 接口平台&#…...
次元画室开箱体验:糖果色调UI,交互像在读热血漫画
次元画室开箱体验:糖果色调UI,交互像在读热血漫画 1. 初见惊艳:打破常规的二次元界面设计 第一次打开次元画室,扑面而来的不是冷冰冰的代码界面,而是一张充满活力的漫画原稿纸。整个UI采用了高饱和度的糖果色调&…...
从零开始:在PC上体验Nintendo Switch游戏的完整指南
从零开始:在PC上体验Nintendo Switch游戏的完整指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 你是否想过在电脑上畅玩《塞尔达传说:王国之泪》、《超级马…...
拓扑排序不止于理论:从邻接矩阵的暴力实现到工程项目的优雅应用
拓扑排序不止于理论:从邻接矩阵的暴力实现到工程项目的优雅应用 引言 第一次接触拓扑排序时,很多人都会被它那看似简单却充满智慧的算法逻辑所吸引。在课堂练习中,我们常常用邻接矩阵来实现这个算法——逐列扫描、标记访问、清空行…...
PlayStation手柄Windows兼容性解决方案:DS4Windows深度解析与实践指南
PlayStation手柄Windows兼容性解决方案:DS4Windows深度解析与实践指南 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 对于希望在Windows PC上使用PlayStation手柄的游戏玩家来…...
Kubernetes集群中containerd运行时集成Harbor与阿里云私有仓库及镜像加速器的实战配置指南
1. 为什么需要集成多种镜像仓库? 在Kubernetes生产环境中,容器镜像的来源往往不是单一的。你可能需要从多个渠道获取镜像:企业内部搭建的Harbor私有仓库存放核心业务镜像,阿里云私有仓库托管第三方组件,公共镜像加速器…...
突破语言壁垒:XUnity.AutoTranslator的游戏实时翻译解决方案
突破语言壁垒:XUnity.AutoTranslator的游戏实时翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 当你面对心仪的日文视觉小说却因不懂日语而无法体验剧情,或是在游玩欧…...
避坑指南:用微PE工具箱制作万能启动盘时容易忽略的5个细节(附服务器专用插件包)
避坑指南:用微PE工具箱制作万能启动盘时容易忽略的5个细节(附服务器专用插件包) 运维工程师们常说:"PE启动盘是服务器救急的瑞士军刀。"但当这把"军刀"在关键时刻掉链子时,往往是因为制作过程中那…...
