当前位置: 首页 > news >正文

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 匿名方法 概念&#xff1a; 匿名方法是没有名称的方法实现&#xff0c;通常与委托关联使用。它提供了一种在不创建独立命名方法的情况下编写代码块的方式。 语法&#xff1a; delegate void MyDelegate(string message);MyDelegate del dele…...

django ninja get not allowed 能用 put delete

遇到一个奇怪的问题&#xff0c;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上启动代理&#xff0c;比如nginx 下载nginx&#xff1a;http://nginx.org/en/download.html 修改配置文件&#xff0c;在conf下&#xff1a; http {include mime.types;default_type application/octet-stream;sendfile o…...

论文阅读【时空+大模型】ST-LLM(MDM2024)

论文阅读【时空大模型】ST-LLM&#xff08;MDM2024&#xff09; 论文链接&#xff1a;Spatial-Temporal Large Language Model for Traffic Prediction 代码仓库&#xff1a;https://github.com/ChenxiLiu-HNU/ST-LLM 发表于MDM2024&#xff08;Mobile Data Management&#xf…...

【linux基础】linux远程传输三种免交互方式

linux远程传输三种免交互方式 文章目录 linux远程传输三种免交互方式1、使用sshpass工具2、使用expect脚本来输入密码3、SSH 密钥对 1、使用sshpass工具 建立信任关系的做法是最方便和安全的做法&#xff0c;但是在有些场景下(比如远端的authorized_keys是不能随意更改的)&…...

MySQL篇:事务

1.四大特性 首先&#xff0c;事务的四大特性&#xff1a;ACID&#xff08;原子性&#xff0c;一致性&#xff0c;隔离性&#xff0c;持久性&#xff09; 在InnoDB引擎中&#xff0c;是怎么来保证这四个特性的呢&#xff1f; 持久性是通过 redo log &#xff08;重做日志&…...

处理在 electron 中使用开启了懒加载的 el-image 后,窗口最大化或窗口尺寸变化后图片无法显示的问题

文章目录 1、问题描述2、详情动图3、解决思路4、解决方案5、效果展示 1、问题描述 在 electron 中使用 el-image 时&#xff0c;开启了懒加载后&#xff0c;发现只有当窗口滚动后&#xff0c;图片才会显示&#xff0c;即便图片已经处于窗口的可视区域。当拖动窗口使其尺寸变大…...

Electron 进程间通信

文章目录 渲染进程到主进程&#xff08;单向&#xff09;渲染进程到主进程&#xff08;双向&#xff09;主进程到渲染进程 &#xff08;单向&#xff0c;可模拟双向&#xff09; 渲染进程到主进程&#xff08;单向&#xff09; send &#xff08;render 发送&#xff09;on &a…...

0基础学python-8:if,while,for

目录 前言&#xff1a; 一、选择循环结构 1.if条件语句 2.while 3.for循环 4.break语句 5.continue语句 前言&#xff1a; if、while 和 for 是 Python 中常用的控制流结构&#xff0c;它们分别用于条件判断、循环执行和迭代遍历。这些关键字帮助程序根据条件和数据进行选…...

低空经济持续发热,无人机培训考证就业市场及前景剖析

随着科技的不断进步和社会需求的日益增长&#xff0c;低空经济已成为全球及我国经济增长的新引擎。作为低空经济的重要组成部分&#xff0c;无人机技术因其广泛的应用领域和显著的经济效益&#xff0c;受到了社会各界的广泛关注。为满足市场对无人机人才的需求&#xff0c;无人…...

[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包&#xff0c;反编译class&#xff0c;新建java源文件&#xff0c;修改代码&#xff0c;再编译成class&#xff0c;替换jar包内的class文件。 现在…...

JavaScript系列:JS实现复制粘贴文字以及图片

文章目录 一. 基于 Clipboard API 复制文字&#xff08;推荐&#xff09;基本概念主要方法使用限制实际应用示例 二、基于 document.execCommand(copy)缺陷实际应用示例说明 三、复制图片功能四、封装 一. 基于 Clipboard API 复制文字&#xff08;推荐&#xff09; 基本概念 …...

音视频入门基础:H.264专题(14)——计算视频帧率的公式

一、引言 通过FFmpeg命令可以获取到H.264裸流文件的视频帧率&#xff1a; 在vlc中也可以获取到视频帧率&#xff08;vlc底层也使用了FFmpeg进行解码&#xff09;&#xff1a; 所以FFmpeg和vlc是怎样获取到H.264编码的视频的帧率呢&#xff1f;它们其实是通过SPS中的VUI parame…...

LeetCode-返回链表倒数第K个节点、链表的回文结构,相交链表

一、返回链表倒数第k个节点 . - 力扣&#xff08;LeetCode&#xff09; 本体思路参展寻找中间节点的方法&#xff0c;寻找中间节点是定义快慢指针&#xff0c;快指针每次走两步&#xff0c;慢指针每次走一步&#xff0c;当快指针为空或者快指针的下一个节点是空时&#xff0c;…...

Linux 网络配置与连接

一、网络配置 1.1 ifconfig 网卡配置查询 ifconfig #查看所有启动的网络接口信息 ifconfig 指定的网卡 #查看指定网络接口信息 1.2 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #ens33网络配置文…...

5. 基于Embedding实现超越elasticsearch高级搜索

Embedding介绍 Embedding是向量的意思&#xff0c;向量可以理解为平面坐标中的一个坐标点(x,y),在编程领域&#xff0c;一个二维向量就是一个大小为float类型的数组。也可以用三维坐标系中的向量表示一个空间中的点。在机器学习中&#xff0c;向量通常用于表示数据的特征。 向量…...

探索Docker网络配置和管理

目录 1.docker网络类型有几种&#xff1f; 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、官方网址 官方地址&#xff1a;https://www.beekeeperstudio.io/ 1.2、Github 网址 Github地址&#xff1a;https://github.com/beekeeper-studio…...

信息系统项目管理师(高项)—学习笔记二

第一章 以下是上一篇&#xff08;信息系统项目管理师&#xff08;高项&#xff09;—学习笔记&#xff09;的续写&#xff0c;因为是之前记录的&#xff0c;这一篇还是细致到每一个小节的内容&#xff0c;有些过于复杂了&#xff0c;后续会简化~ 1.3 现代化创新发展 党的十九…...

【Vue】 style中的scoped

一、什么是scoped&#xff0c;为什么要用 在vue文件中的style标签上&#xff0c;有一个特殊的属性&#xff1a;scoped。 当一个style标签拥有scoped属性时&#xff0c;它的CSS样式就只能作用于当前的组件&#xff0c;通过该属性&#xff0c;可以使得组件之间的样式不互相污染…...

MCGS组态软件连接Modbus TCP设备?别急,先搞懂网关的这5种工作模式怎么选

MCGS组态软件连接Modbus TCP设备&#xff1a;网关工作模式深度解析与选型指南 在工业自动化系统中&#xff0c;MCGS组态软件与Modbus TCP设备的稳定通信是数据采集与控制的基础环节。ZLAN5143D作为一款多功能工业网关&#xff0c;其五种工作模式的选择直接影响系统响应速度、数…...

量子计算如何革新自然语言处理的语义分析

1. 量子计算与自然语言处理的交叉探索量子计算与自然语言处理的结合正在开辟一个全新的研究领域。作为一名长期关注量子计算应用的从业者&#xff0c;我见证了这项技术从理论构想逐步走向实际验证的过程。量子计算利用量子比特&#xff08;qubit&#xff09;的叠加态和纠缠特性…...

我用了半年只留下这1个!2026年录音怎么转换成文字亲测准确率真的超高

我前后用了大半年录音转文字工具&#xff0c;试了免费小工具、大厂办公套件自带功能、好几个专门做转写的产品&#xff0c;踩了一堆坑之后最终只留了一个——听脑AI。作为常年要整理课堂录音、调研访谈的学生党&#xff0c;我可以负责任说&#xff0c;2026年做录音转文字&#…...

如何为 publiccode.asia 项目贡献代码:开发者入门指南

如何为 publiccode.asia 项目贡献代码&#xff1a;开发者入门指南 【免费下载链接】publiccode.asia-legacy Website of https://publiccode.asia 项目地址: https://gitcode.com/gh_mirrors/pu/publiccode.asia-legacy publiccode.asia 项目致力于推动公共资金资助的软…...

如何5分钟快速集成PinLockView到你的Android应用:终极指南 [特殊字符]

如何5分钟快速集成PinLockView到你的Android应用&#xff1a;终极指南 &#x1f680; 【免费下载链接】PinLockView A clean, minimal, highly customizable pin lock view for Android 项目地址: https://gitcode.com/gh_mirrors/pi/PinLockView PinLockView 是一个专为…...

SAP LeanIX: 从“手工台账”到“EA中枢“

在上一篇文章中&#xff0c;我们跟着PumpTech走完了一整圈——从体检、找堵点、数据验证&#xff0c;到画目标蓝图、排路线图。最后我们提炼了一套“五步法”和一个“三维评估矩阵”&#xff0c;算是把EA方法论从书本拽到了地上。 但故事讲完后&#xff0c;有一个问题始终悬而…...

量子加速,多模态跃迁:国产大模型的下一站机遇

量子加速&#xff0c;多模态跃迁&#xff1a;国产大模型的下一站机遇 引言 当国产多模态大模型在理解图文、生成内容上不断突破时&#xff0c;一个更具颠覆性的技术变量正在悄然融入——量子计算。这不仅是实验室里的前沿概念&#xff0c;更是百度、华为、阿里等科技巨头竞相布…...

【awinic inside】音质续航,听声辨位 | 艾为芯助力小天才AI手表Z12

...

2026武汉美术艺考培训机构排名出炉,家长择校必看!

在美育教育持续受重视的背景下&#xff0c;美术高考成为众多学子升学的重要渠道。武汉作为华中美育核心城市&#xff0c;美术培训机构已超 300 家&#xff0c;市场竞争激烈。据湖北省教育考试院 2026 年湖北美术联考数据&#xff0c;全省美术考生超 1.8 万人&#xff0c;武汉占…...

量子优化算法ITEMC:原理、实现与应用

1. 量子优化算法ITEMC的核心原理量子优化算法ITEMC&#xff08;Imaginary Time Evolution Mimicking Circuit&#xff09;是一种创新的混合量子-经典算法&#xff0c;专门用于解决二次无约束二进制优化&#xff08;QUBO&#xff09;问题。其核心思想源自量子力学中的虚时间演化…...