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>類的數據。
>
以上是Linq的Select和Select Many運算符有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!