首页 > 后端开发 > C++ > Linq的Select和Select Many运算符有什么区别?

Linq的Select和Select Many运算符有什么区别?

Susan Sarandon
发布: 2025-01-28 17:51:10
原创
988 人浏览过

What's the Difference Between LINQ's Select and SelectMany Operators?

linq to sql:理解SelectSelectMany

Select掌握linq to sql需要了解SelectMany之间的密钥差异。两个项目数据,但它们的方法都有很大差异。

>

Select>执行一对一的转换。 它从输入序列中获取每个元素,并应用功能以在输出序列中产生新元素。 这是提取特定属性或对单个项目进行计算的理想选择。

> 另一方面,

SelectMany将一系列序列扁平化为单个序列。使用分层或嵌套数据结构时,这是无价的。它使您可以穿越多个级别并访问基础元素。

>

让我们用一个包含Person对象的集合的aPhoneNumber类说明:

>
<code class="language-csharp">public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { get; set; }
}</code>
登录后复制

Select示例:

<code class="language-csharp">IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
登录后复制

这使用Select>获得一系列电话号码序列 - 每个人一个。 结果保持嵌套。

SelectMany示例:

<code class="language-csharp">IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
登录后复制

SelectMany>扁平的结构,产生一个包含所有人的所有电话号码的单个序列。

>将父母和子数据与>组合在一起:SelectMany>

>

的强大功能是它可以将父数据纳入投影的能力。使用与第二个参数的过载,您可以创建一个结合父属性和子女属性的新对象:> SelectMany

这会生成一个目录,列出了每个人的名称及其关联的电话号码。 输出结合了来自
<code class="language-csharp">var directory = people
    .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
登录后复制

类的数据。Person>

以上是Linq的Select和Select Many运算符有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板