LINQ to SQL 中 Select 和 SelectMany 的區別及應用場景
在使用 LINQ to SQL 時,理解 Select
和 SelectMany
之間的區別至關重要。 Select
用於從數據集檢索單個元素,而 SelectMany
用於扁平化包含嵌套集合的查詢結果。
以下示例將更清晰地說明兩者之間的差異:
假設我們有一個 Person
類,它包含一個 PhoneNumbers
屬性,該屬性返回一個 PhoneNumber
實例的集合。為了檢索所有人員的所有電話號碼,我們可以使用 Select
:
<code class="language-csharp">IEnumerable<Person> people = new List<Person>(); // Select: 返回一个电话号码列表的列表 IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
但是,phoneLists
包含的是各個電話號碼列表的集合,這可能並非我們想要的結果。為了扁平化這個嵌套數據並獲得一個完整的電話號碼列表,我們使用 SelectMany
:
<code class="language-csharp">// SelectMany: 将集合扁平化为一个电话号码列表 IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
此外,如果我們想將父 Person
對象的數據包含到結果中,可以使用帶有結果選擇器的 SelectMany
重載:
<code class="language-csharp">// 带结果选择器的 SelectMany: 在结果中包含父数据 var directory = people .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
通過理解 Select
和 SelectMany
之間的區別,您可以有效地操作 LINQ to SQL 查詢中的數據,精確地檢索和聚合所需的信息。
以上是選擇與SQL中的Linq中的選擇與Selectany:我什麼時候應該使用哪個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!