GroupBy
GroupBy 是一種將 IEnumerable<T>
專案集合分類到不同組的簡單方法。
簡單的例子
在第一個例子中,我們最終得到兩個組,奇數項和偶數項。
List<int> iList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var grouped = iList.GroupBy(x => x % 2 == 0);
//Groups iList into odd [13579] and even[2468] items
foreach(var group in grouped)
{
foreach (int item in group)
{
Console.Write(item); // 135792468 (first odd then even)
}
}
更復雜的例子
讓我們按年齡分組人員列表作為例子。首先,我們將建立一個 Person 物件,它具有 Name 和 Age 兩個屬性。
public class Person
{
public int Age {get; set;}
public string Name {get; set;}
}
然後我們建立具有不同名稱和年齡的人員樣本列表。
List<Person> people = new List<Person>();
people.Add(new Person{Age = 20, Name = "Mouse"});
people.Add(new Person{Age = 30, Name = "Neo"});
people.Add(new Person{Age = 40, Name = "Morpheus"});
people.Add(new Person{Age = 30, Name = "Trinity"});
people.Add(new Person{Age = 40, Name = "Dozer"});
people.Add(new Person{Age = 40, Name = "Smith"});
然後我們建立一個 LINQ 查詢,按年齡對我們的人員列表進行分組。
var query = people.GroupBy(x => x.Age);
這樣,我們可以看到每個組的年齡,並列出該組中的每個人。
foreach(var result in query)
{
Console.WriteLine(result.Key);
foreach(var person in result)
Console.WriteLine(person.Name);
}
這導致以下輸出:
20
Mouse
30
Neo
Trinity
40
Morpheus
Dozer
Smith
你可以在 .NET Fiddle 上使用現場演示