linq:通過鍵對GroupBy
和ToLookup
。
>讓我們用類說明: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中文網其他相關文章!