首页 > 其他分享 >Linq的常用方法

Linq的常用方法

时间:2024-07-16 19:57:28浏览次数:9  
标签:常用 Name Age 元素 Linq 集合 序列 方法 输入

LINQ(Language Integrated Query)是.NET Framework中用于数据查询的组件,它将查询功能集成到C#等.NET语言中。LINQ提供了丰富的查询操作符,这些操作符可以应用于各种数据源,如内存中的集合、数据库、XML等。以下是一些LINQ的常用方法:

目录

1. 基本查询方法

2. 元素选择与投影

3. 分页与跳过元素

4. 排序

5. 集合操作

6. 分组与去重

7. 转换与聚合

8. 特定操作


1. 基本查询方法

  • Where:用于限定输入集合中的元素,将符合条件的元素组织成一个序列结果。
  • Select:用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素类型相同,也可以不同。
  • SelectMany:与Select类似,但可以根据输入序列中的每一个元素,在输出序列中创建相应的零个或多个元素。

2. 元素选择与投影

  • First/FirstOrDefault:返回序列中的第一个元素,FirstOrDefault在序列为空时返回默认值(对于引用类型为null,对于值类型为该类型的默认值)。
  • Single/SingleOrDefault:返回序列中的唯一元素,如果序列为空或包含多个元素,则Single会抛出异常,而SingleOrDefault在序列为空时返回默认值。

3. 分页与跳过元素

  • Take:从输入序列中返回指定数量的元素,常用于分页。
  • Skip:从输入序列中跳过指定数量的元素,返回由序列中剩余的元素所组成的新序列。
  • SkipWhile:从输入序列中跳过满足一定条件指定数量的元素。

4. 排序

  • OrderBy:对输入序列中的元素进行排序,基于一个委托方法的返回值顺序。
  • OrderByDescending:与OrderBy类似,但按降序排序。
  • ThenByThenByDescending:用于在OrderBy或OrderByDescending之后,根据另一个条件对序列进行进一步排序。

5. 集合操作

  • Concat:连接两个序列,生成一个新序列。
  • Union:将两个序列中的元素合并成一个新的序列,新序列将自动去除重复的元素。
  • Intersect:将两个输入序列中的重复元素挑选出来,生成一个新的集合,即求交集。
  • Except:返回两个序列中存在于第一个序列但不存在于第二个序列的元素所组成的新序列。

6. 分组与去重

  • GroupBy:类似于SQL语言中的Group By语句,用于将输入序列中的元素进行分组。
  • Distinct:类似于SQL语句中的Distinct语句,用于去除一个序列中的重复元素。

7. 转换与聚合

  • Cast:将一个类型为IEnumerable的集合对象转换为IEnumerable<T>类型的集合对象。
  • OfType:与Cast类似,但更加安全,仅会将能够成功转换的元素进行转换。
  • AsEnumerable:将一个实现了IEnumerable<T>接口的对象转换成一个标准的IEnumerable<T>接口对象。
  • Aggregate:对序列中的元素进行累积操作,如求和、求积等。

8. 特定操作

  • Join:类似于SQL语句中的Join语句,用于连接两个输入序列。
  • GroupJoin:也用于连接两个输入序列,但与Join不同,它允许将outer序列元素与对应的inner序列元素作为组一次性处理。
  • Reverse:生成一个与输入序列中元素相同,但元素排列顺序相反的新序列。

LINQ的这些常用方法使得在.NET中查询和处理数据变得更加灵活和强大。它们可以被组合使用,以构建复杂的查询逻辑,满足各种数据处理需求。

例:用linq表达式查找一个集合元素不包含另一个集合元素

假设你有两个集合,每个集合的元素都是具有多个属性的对象,比如Person对象,它们都有NameAge属性。你想要从mainSet中筛选出那些NameAge都不与excludedSet中任何PersonNameAge相匹配的人。

var filteredSet = mainSet.Where(p => !excludedSet.Any(ep => ep.Name == p.Name && ep.Age == p.Age)).ToList(); 

标签:常用,Name,Age,元素,Linq,集合,序列,方法,输入
From: https://blog.csdn.net/x1234w4321/article/details/140262152

相关文章

  • gdb调试c、cpp源代码方法步骤
    1.代码举例//example.c#include<stdio.h>intaddNumbers(intnum1,intnum2){returnnum1+num2;}intmain(){inta=10;intb=20;intsum=addNumbers(a,b);printf("Thesumis:%d\n",sum);return0;}......
  • HTTP服务工具类,包括带参数的 post/http get/http get 方法
    1、导入maven依赖<!--apachehttpclient客户端工具包--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version>......
  • 【RAII机制】的使用方法及优势
            RAII(ResourceAcquisitionIsInitialization)机制是C++中一种非常流行的资源管理策略,其核心思想是利用对象的生命周期来自动管理资源。当对象被创建时,它自动获取所需的资源;当对象被销毁时(例如,离开其作用域时),它自动释放这些资源。这种机制有助于减少资源泄露,增......
  • iOS开发基础105-Xcode收集Crashs的各种方法
    Xcode提供了一整套工具和功能来帮助开发者收集、分析和处理应用崩溃报告。通过这些工具,开发者可以追踪和解析崩溃日志,以更加准确和及时地修复问题。以下是详细介绍Xcode工具收集崩溃报告的各种方法。一、通过设备获取崩溃报告1.连接设备将iOS设备通过USB连接到您的Mac......
  • IDEA常用快捷键
    快捷键功能Alt+Enter导入包,自动补全Ctrl+Y/X删除光标所在行Ctrl+D复制光标所在行的内容,插入光标位置下面Ctrl+Alt+L格式化代码Ctrl+/单行注释,再按取消注释Ctrl+Shift+/选中代码注释,多行注释,在按取消注释Alt+Insert创造一切!自动生成代码,toStrin......
  • 如何将文本转换为向量?(方法四)
    ​ 文本转换为向量有多种方式:方法一:通过模型服务灵积DashScope将文本转换为向量(推荐)方法二:通过ModelScope魔搭社区中的文本向量开源模型将文本转换为向量方法三:通过JinaEmbeddingsv2模型将文本转换为向量方法四:通过百川智能向量化模型将文本转换为向量本文介绍方法四:如......
  • JVM方法区和永久代的区别(文章来源于文心一言)
    方法区和永久代的区别:一、定义与功能方法区(MethodArea)定义:方法区是JVM规范中定义的一个内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但它通常被称为“非堆”(Non-Heap),以......
  • 如何将文本转换为向量?(方法三)
    ​ 文本转换为向量有多种方式:方法一:通过模型服务灵积DashScope将文本转换为向量(推荐)方法二:通过ModelScope魔搭社区中的文本向量开源模型将文本转换为向量方法三:通过JinaEmbeddingsv2模型将文本转换为向量方法四:通过百川智能向量化模型将文本转换为向量本文介绍方法三:如......
  • 关于任务栏图标变白的原因及解决方法(以 QQ 为例)
    如下图所示,qq图标变白了,原因是我qq更新后改动了所在位置,或者你将一些软件连同整个文件夹一起移动到其他文件夹下也可能会出现这种情况。这种变白并不是我之前说的桌面图标变白,如果你是桌面的图标变白,可以参考我之前写的博客的解决方案:针对Win10系统为了加速图标的显示,......
  • C#拼接Json串的几种方法
    1. 利用  JsonConvert.SerializeObject方法(Nuget获取Newtonsoft.JsonPackage),需要Newtonsoft.Json 支持。stringuid="22";varabcObject=new{AccessKey=11,CustomerNo=uid,mc="33",qd="44",mr="55",......