2016-01-27 150 views
1

我有兩個列表。雖然不是通常的。計算另一個列表中一個列表中元素的出現

第一:

Combinations<string> someCombination = new Combinations<string>(someOtherList, 2); 
var firstList = someCombination.ToList(); 

它返回:

[0] { cy gr } 
[1] { cy ja } 
[2] { cy ka } 
[3] { cy wo } 
[4] { cy zo } 
[5] { gr ja } 
[6] { gr ka } 
[7] { gr wo } 
[8] { gr zo } 
[9] { ja ka } 
[10] { ja wo } 
[11] { ja zo } 
[12] { ka wo } 
[13] { ka zo } 
[14] { wo zo } 

二:

List<List<string>> secondList = new List<List<string>>(); 

它返回:

[0] { gr ch wo zo } 
[1] { zo cy gr ma } 
[2] { wo po ja cy } 
[3] { ja ka po gr } 
[4] { zo ka ja og } 
[5] { cy ja zo wo } 
[6] { gr og po ma } 
[7] { wo zo ka cy } 
[8] { gr og wo ja } 
[9] { ja ka ch wo } 

正如你所看到的,我正在使用Combinatorics.Collections庫。 我真正想要的是計算在secondList整個中出現的string元素有多少次,並將所有這些計數存儲在第三個列表中。像這樣的:

List<int> occurrences = new List<int>(); 

這是一個例子,如何將這個名單的樣子,每個索引的firstList指數相匹配:

[0] 1 //because both "cy" and "gr" are contained in 1 secondList sublist(s) 
[1] 2 //because both "cy" and "ja" are contained in 2 secondList sublist(s) 
[2] 1 //et cetera.. 
[3] 3 
[4] 1 
[5] 2 
[6] 1 
[7] 2 
[8] 2 
[9] 3 
[10] 4 
[11] 2 
[12] 2 
[13] 2 
[14] 3 

^如果我做了錯誤不算那些,是我不好。

我認爲LINQ可能會派上用場,但我完全沒有希望。糾正我,如果我錯了。我真的很感謝這裏的幫助。

回答

-1
var occurrences = firstList.Select(l => secondList.Count(ss => l.All(ss.Contains))).ToList(); 

請注意,這不是一個很好的解決辦法,如果這些名單是大,你關心性能。在那種情況下,我會考慮選擇更合適的數據結構。

+0

坦率地說,我只關心它是否會給出結果,而您的解決方案確實如我所願。你有我最深切的感激之情! – goliatpiotr

+0

@goliatpiotr:太好了!那麼你能接受我的答案嗎? – Tim

+0

對不起,即時通訊這個堆棧溢出的東西。我認爲現在接受了。保重! – goliatpiotr

相關問題