linq:通過鍵對GroupBy
和ToLookup
。
>讓我們用類說明:Person
>
class Person { public int PersonID { get; set; } public string Car { get; set; } }
>對象的列表,其中有些人可能有多個條目(例如,擁有多輛車):Person
List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };
對這些人進行分組並列出他們的汽車,我們使用linq的PersonID
方法:GroupBy
var results = persons.GroupBy(p => p.PersonID, p => p.Car);
是一個results
。每個IEnumerable<IGrouping<int, string>>
代表一個具有共同IGrouping
(通過PersonID
訪問)的組,並包含一系列汽車字符串(result.Key
)。 訪問此數據:result
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)}"); }
ToLookup
創建一個字典的結構(ILookup<int, string>
):
var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
>
和List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");
提供直接字典式訪問,而GroupBy
>為複雜的分組方案提供了更大的靈活性。 ToLookup
以上是如何使用LINQ的GroupBy和Tolookup方法通過特定鍵進行分組數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!