首頁 > 後端開發 > C++ > linq選擇與selectany:在變平嵌套集合時它們有何不同?

linq選擇與selectany:在變平嵌套集合時它們有何不同?

Susan Sarandon
發布: 2025-01-28 17:46:08
原創
992 人瀏覽過

LINQ Select vs. SelectMany: How Do They Differ When Flattening Nested Collections?

LINQ Select 與 SelectMany:扁平化嵌套集合的區別

許多開發者在學習LINQ To SQL時,常常對SelectSelectMany方法的差異感到困惑。本文將通過一個LINQ To SQL示例,清晰地解釋它們的區別。

Select方法用於轉換序列中的每個元素,並生成一個包含轉換後元素的新序列。而SelectMany方法則作用於序列的序列,通過返回嵌套序列中的元素,將其扁平化成單個序列。

以下是一個LINQ To SQL示例:

<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; }
}

IEnumerable<Person> people = new List<Person>();

// Select 获取一个电话号码列表的列表。
IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);

// SelectMany 将列表扁平化成单个电话号码。
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);

// 使用带 resultSelector 参数的重载方法连接父项和子项数据:
var directory = people
    .SelectMany(p => p.PhoneNumbers,
                (parent, child) => new { parent.Name, child.Number });</code>
登入後複製

在這個例子中,phoneLists包含一系列列表,每個列表代表一個人的電話號碼。 SelectMany方法將這個嵌套結構扁平化,生成phoneNumbers,其中只包含單個電話號碼。

此外,我們還可以利用SelectMany重載方法中的resultSelector參數,在結果中包含父對象(Person)的信息。因此,directory變量存儲一個匿名對象的列表,其中包含該人的姓名和電話號碼。

這個全面的例子演示了LINQ To SQL中SelectSelectMany方法的基本區別。 Select轉換序列中的單個元素,而SelectMany扁平化嵌套序列,從而在操作數據結構方面提供了更大的靈活性。

以上是linq選擇與selectany:在變平嵌套集合時它們有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板