C# 计算一个列表中的元素在另一个列表中的出现次数
我有两张单子。但不是通常的 第一:C# 计算一个列表中的元素在另一个列表中的出现次数,c#,linq,combinations,combinatorics,C#,Linq,Combinations,Combinatorics,我有两张单子。但不是通常的 第一: Combinations<string> someCombination = new Combinations<string>(someOtherList, 2); var firstList = someCombination.ToList(); 第二: List<List<string>> secondList = new List<List<string>>(); 如您所
Combinations<string> someCombination = new Combinations<string>(someOtherList, 2);
var firstList = someCombination.ToList();
第二:
List<List<string>> secondList = new List<List<string>>();
如您所见,我正在使用组合学.Collections
库。
我真正想要的是计算string
元素在整个secondList
中出现的次数,并将所有这些计数存储在第三个列表中。像这个:
List<int> occurrences = new List<int>();
^如果我数错了,我的错
我想LINQ可能会在这里派上用场,但我对此完全没有希望。如果我错了,请纠正我。我真的很感激这里的帮助
var occurrences = firstList.Select(l => secondList.Count(ss => l.All(ss.Contains))).ToList();
请注意,如果这些列表很大,并且您关心性能,那么这不是一个好的解决方案。在这种情况下,我会考虑选择更合适的数据结构。坦率地说,我只关心它是否给出结果,并且您的解决方案是否真的如我所愿。我对你感激不尽@歌利亚·皮奥特:太好了!那你能接受我的回答吗?对不起,我是新来的。我想我现在接受了。当心!
List<int> occurrences = new List<int>();
[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
var occurrences = firstList.Select(l => secondList.Count(ss => l.All(ss.Contains))).ToList();