我有两个清单。虽然不是平常的。
第一的:
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
库。我真正想要的是计算这两个string
元素firstList
在整体中出现的次数secondList
,并将所有这些计数存储在第三个列表中。像这个:
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在这里可能会派上用场,但我对此完全没有希望。如果我弄错了,请纠正我。我非常感谢您的帮助。
var occurrences = firstList.Select(l => secondList.Count(ss => l.All(ss.Contains))).ToList();
请注意,如果这些列表很大并且您关心性能,那么这不是一个好的解决方案。在那种情况下,我会考虑选择更合适的数据结构。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句