linq to sql:理解Select
和SelectMany
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中文网其他相关文章!