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

c#的List<T>的SelectMany 和Select

在C#中,List<T>(以及任何实现了IEnumerable<T>的集合)的Select和SelectMany扩展方法都是LINQ(Language Integrated Query)的一部分,用于对集合中的元素进行查询和转换。

尽管它们的作用有些相似,但它们在处理集合时的方式和结果上有显著的区别。

Select

Select方法用于将集合中的每个元素投影(或转换)为一个新的形式。

它不会改变集合中元素的数量,只是改变了每个元素的表现形式。

每个输入元素都会被转换成一个输出元素,因此输出集合的长度与输入集合相同。

//假设我们有一个List<int>,我们想要将其中的每个整数乘以2。
List<int> numbers = new List<int> { 1, 2, 3 };  var doubledNumbers = numbers.Select(n => n * 2);  
// doubledNumbers 的类型是 IEnumerable<int>,包含 { 2, 4, 6 }


SelectMany

 

SelectMany方法用于将一个集合中的每个元素都转换成一个集合,然后将所有这些子集合合并成一个单独的集合。

这意味着,如果每个输入元素都被转换成一个包含多个元素的集合,那么输出集合的长度将是所有这些子集合中元素的总数。
 

//假设我们有一个List<int[]>,我们想要将所有数组中的整数合并成一个单独的List<int> List<int[]> arrays = new List<int[]> {new int[] { 1, 2 },new int[] { 3, 4 }, new int[] { 5 }};var flattenedList = arrays.SelectMany(arr => arr);// flattenedList 的类型是 IEnumerable<int>,包含 { 1, 2, 3, 4, 5 }//在这个例子中,每个int[] 都被转换成了它的单个元素,然后这些元素被合并成了一个单独的IEnumerable<int>。


总结

Select:将集合中的每个元素转换为新的形式,不改变元素数量。
SelectMany:将集合中的每个元素转换为一个集合,然后将这些集合合并成一个单独的集合,可能会改变元素数量(通常是增加)。

http://www.lryc.cn/news/394054.html

相关文章:

  • 69.WEB渗透测试-信息收集- WAF、框架组件识别(9)
  • ASCII码对照表(Matplotlib颜色对照表)
  • Mysql-常用函数及其用法总结
  • 【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
  • 【数据结构】链表带环问题分析及顺序表链表对比分析
  • 快速解决找不到krpt.dll,无法继续执行代码问题
  • C# List、LinkedList、Dictionary性能对比
  • 【Spring Cloud】微服务的简单搭建
  • 全球首款商用,AI为视频自动配音配乐产品上线
  • Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目
  • 【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索
  • 执行力不足是因为选择模糊
  • 力扣 225题 用队列实现栈 记录
  • 中英双语介绍意大利(Italy):有哪些著名景点、出名品牌?
  • Python【打包exe文件两步到位】
  • 基于模型预测控制的PMSM系统速度环控制理论推导及仿真搭建
  • 【PYG】GNN和全连接层(FC)分别在不同的类中,使用反向传播联合训练,实现端到端的训练过程
  • vue3使用方式汇总
  • Turborepo简易教程
  • 初中物理知识点总结(人教版)
  • ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶
  • 【开源项目】LocalSend 局域网文件传输工具
  • ARM/Linux嵌入式面经(十一):地平线嵌入式实习
  • 基于Redis的分布式锁
  • 如何将 Apifox 的自动化测试与 Jenkins 集成?
  • 【FFmpeg】av_write_frame函数
  • 【算法专题】双指针算法
  • Lock与ReentrantLock
  • ARM/Linux嵌入式面经(十三):紫光同芯嵌入式
  • 名企面试必问30题(二十四)—— 说说你空窗期做了什么?