linq:通過鍵對GroupBy
和ToLookup
進行分組數據
LINQ提供了基於特定標準分組數據的有效方法。 當處理對象的集合併需要基於公共密鑰匯總信息時,這特別有用。
。
>讓我們用
類說明:Person
>
1 2 3 4 5 | class Person
{
public int PersonID { get; set; }
public string Car { get; set; }
}
|
登入後複製
考慮一個
>對象的列表,其中有些人可能有多個條目(例如,擁有多輛車):Person
1 2 3 4 5 6 | 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
1 | var results = persons.GroupBy(p => p.PersonID, p => p.Car);
|
登入後複製
是一個results
。每個IEnumerable<IGrouping<int, string>>
代表一個具有共同IGrouping
(通過PersonID
訪問)的組,並包含一系列汽車字符串(result.Key
)。 訪問此數據:result
1 2 3 4 5 6 | foreach ( var result in results)
{
int personID = result.Key;
List<string> cars = result.ToList();
Console.WriteLine($ "Person ID: {personID}, Cars: {string.Join(" , ", cars)}" );
}
|
登入後複製
另外,
ToLookup
創建一個字典的結構(ILookup<int, string>
):>
然後,訪問數據更簡單:
1 | var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
|
登入後複製
>
和1 2 | List<string> carsForPerson1 = carsByPersonID[1].ToList();
Console.WriteLine($ "Cars for Person 1: {string.Join(" , ", carsForPerson1)}" );
|
登入後複製
提供有效的方法來根據鍵進行分組數據,從而使LINQ中的數據操作更加精簡。 提供直接字典式訪問,而GroupBy
>為複雜的分組方案提供了更大的靈活性。 ToLookup
以上是如何使用LINQ的GroupBy和Tolookup方法通過特定鍵進行分組數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!