linq select 和selectMany的区别

news/2024/9/23 3:29:17/

SelectSelectMany 都是 LINQ 查询方法,但它们之间有一些区别。

  1. Select 方法用于从集合中选择特定的属性或对集合中的元素进行转换,并返回一个新的集合。例如:
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(x => x * x);// squaredNumbers 的值为 { 1, 4, 9, 16, 25 }
  1. SelectMany 方法用于对集合中的元素进行嵌套操作,并返回一个扁平化的结果集。例如:
var teams = new List<Team>
{new Team { Name = "Team A", Members = new List<string> { "Alice", "Bob" } },new Team { Name = "Team B", Members = new List<string> { "Charlie", "David" } }
};var allMembers = teams.SelectMany(t => t.Members);// allMembers 的值为 { "Alice", "Bob", "Charlie", "David" }

因此,Select 用于简单的投射和转换操作,而 SelectMany 用于处理嵌套结构并将其扁平化。
实例:

public class Select
{public Select(params string[] str){str?.ToList()?.ForEach(x => Attrs.Add(x));}public List<string> Attrs { get; set; } = new List<string>();
}
void Main()
{var demoList = new List<Select>();demoList.Add(new Select("s1", "s2"));demoList.Add(new Select("s11", "s22"));demoList.Add(new Select("s111", "s222"));var firstList = demoList.Select(x => x.Attrs).ToList();var secondList = demoList.SelectMany(x => x.Attrs).ToList();
}

firstList 结果:select 只是list 集合中的元素返回
在这里插入图片描述
secondList 结果:selectMany 把集合中的list集合合并了返回
在这里插入图片描述


http://www.ppmy.cn/news/1433180.html

相关文章

在 Windows 系统上彻底卸载 TeamViewer 软件

在 Windows 系统上彻底卸载 TeamViewer 软件 References 免费版仅供个人使用 您的会话将在 5 分钟后终止 Close TeamViewer by locating the TeamViewer icon in the system tray, right click and “Exit TeamViewer”. Right click Windows start menu then Control Panel -…

1883. 准时抵达会议现场的最小跳过休息次数

1883. 准时抵达会议现场的最小跳过休息次数 题目链接&#xff1a;1883. 准时抵达会议现场的最小跳过休息次数 代码如下&#xff1a; //参考&#xff1a;https://leetcode.cn/problems/minimum-skips-to-arrive-at-meeting-on-time/solutions/2746611/jiao-ni-yi-bu-bu-si-kao…

H264 编码标准常见术语解释

H264 编码标准 H.264编码标准&#xff0c;也被称作MPEG-4 AVC&#xff08;Advanced Video Coding&#xff09;&#xff0c;是一种被广泛使用的数字视频压缩标准&#xff0c;由国际电信联盟&#xff08;ITU-T&#xff09;和国际标准化组织&#xff08;ISO&#xff09;共同开发。…

WEB服务的配置与使用 Apache HTTPD

服务端&#xff1a;服务器将发送由状态代码和可选的响应正文组成的 响应 。状态代码指示请求是否成功&#xff0c;如果不成功&#xff0c;则指示存在哪种错误情况。这告诉客户端应该如何处理响应。较为流星的web服务器程序有&#xff1a; Apache HTTP Server 、 Nginx 客户端&a…

AI图书推荐:如何用ChatGPT和Python进行数据可视化

《如何用ChatGPT和Python进行数据可视化》的原版英文图书标题&#xff1a;Python 3 Data Visualization Using ChatGPT - GPT-4 &#xff0c;作者是 Oswald Campesato &#xff0c;2023年出版 本书旨在向读者展示Python 3编程的概念和数据可视化的艺术。它还探讨了使用ChatGPT/…

Spring Security提供了多种安全防护功能,包括认证、授权、防护攻击

在Spring Boot项目中使用Spring Security是实现强大的安全和访问控制策略的优秀方法。Spring Security提供了多种安全防护功能&#xff0c;包括认证、授权、防护攻击等&#xff0c;都可以通过声明式的安全配置来实现。下面是如何在Spring Boot项目中利用Spring Security来加强安…

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

阿里云的应用型负载均衡,网络型负载均衡,传统型负载均衡

阿里云提供了几种不同类型的负载均衡服务&#xff0c;各有其特定的应用场景和性能特点。这些包括应用型负载均衡&#xff08;Application Load Balancer, ALB&#xff09;、网络型负载均衡&#xff08;Network Load Balancer, NLB&#xff09;和传统型负载均衡&#xff08;Clas…