首頁 >後端開發 >C++ >如何使用LINQ的GroupBy和Tolookup方法通過特定鍵進行分組數據?

如何使用LINQ的GroupBy和Tolookup方法通過特定鍵進行分組數據?

Linda Hamilton
Linda Hamilton原創
2025-02-02 00:11:09988瀏覽

How Can I Group Data by a Specific Key Using LINQ's GroupBy and ToLookup Methods?

linq:通過鍵對GroupByToLookup

進行分組數據 LINQ提供了基於特定標準分組數據的有效方法。 當處理對象的集合併需要基於公共密鑰匯總信息時,這特別有用。

>讓我們用

類說明:Person>

<code class="language-csharp">class Person
{
    public int PersonID { get; set; }
    public string Car { get; set; }
}</code>
考慮一個

>對象的列表,其中有些人可能有多個條目(例如,擁有多輛車):Person

<code class="language-csharp">List<Person> persons = new List<Person>()
{
    new Person { PersonID = 1, Car = "Ferrari" },
    new Person { PersonID = 1, Car = "BMW" },
    new Person { PersonID = 2, Car = "Audi" }
};</code>
>通過

對這些人進行分組並列出他們的汽車,我們使用linq的PersonID方法:GroupBy

<code class="language-csharp">var results = persons.GroupBy(p => p.PersonID, p => p.Car);</code>

是一個results。每個IEnumerable<IGrouping<int, string>>代表一個具有共同IGrouping(通過PersonID訪問)的組,並包含一系列汽車字符串(result.Key)。 訪問此數據:result

<code class="language-csharp">foreach (var result in results)
{
    int personID = result.Key;
    List<string> cars = result.ToList(); // Convert to List for easier access
    Console.WriteLine($"Person ID: {personID}, Cars: {string.Join(", ", cars)}");
}</code>
另外,

ToLookup創建一個字典的結構(ILookup<int, string>):>

然後,訪問數據更簡單:
<code class="language-csharp">var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);</code>

>

<code class="language-csharp">List<string> carsForPerson1 = carsByPersonID[1].ToList();
Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");</code>
提供有效的方法來根據鍵進行分組數據,從而使LINQ中的數據操作更加精簡。

提供直接字典式訪問,而GroupBy>為複雜的分組方案提供了更大的靈活性。 ToLookup

以上是如何使用LINQ的GroupBy和Tolookup方法通過特定鍵進行分組數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn