ILookup 類別的使用

 

Lookup 是一個 key 可以對應到一個或是多個 value 的集合類型。Lookup 無法使用關鍵字 new 創造,只能透過 LinQ 的 ToLookup() 方法來產生。

Lookup 與 Dictionary 的差異為:
1、Dictionary 一個 key 只能對應一個 value
2、Lookup 一個 key 對應一個 group,而一個 group 中可以擁多個 value

範例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
List<(string groupName, string name)> list =
new List<(string groupName, string name)>() {
("animals", "dog"),
("animals", "cat"),
("fruits", "apple"),
("cars", "bmw")
};

ILookup<string, (string, string)> lookups = list.ToLookup(x => x.groupName);

// 列出所有 animals 成員
foreach ((string groupName, string name) in lookups["animals"])
{
Console.WriteLine($"{groupName} - {name}");
}
// output:
// animals - dog
// animals - cat

// 列出所有群組成員
foreach (var group in lookups)
{
foreach ((string groupName, string name) in group)
{
Console.WriteLine($"{groupName} - {name}");
}
}
// output:
// animals - dog
// animals - cat
// fruits - apple
// cars - bmw