我正在做一个项目,我需要找到一个数组的所有可能排列。
我有这个工作,在一定程度上
var geneticsArray = new[] { new[] { "M", "V" }, new[] { "M", "V" }};
var perms = from a in geneticsArray[0]
from b in geneticsArray[1]
select new { a, b };
这为我提供了所有选项:
- 毫米
- 虚拟机
- MV
- 维维
这是正确的,但这不是我想要实现的,因为我的意图和目的 VM 和 MV 是相同的。
如何将 MV 转换为 VM?
这个例子非常简单,只包含 2 个分组,可能有无限的分组,这是我稍后会处理的事情,但只是想让你知道,所以回复不是简单地反转结果。
对此的任何帮助都会很棒。
进一步编辑
使用以下代码,我可以看到每个排列的计数:
var permCounts = from perm in perms group perm by perm into b select new { b.Key, Count = b.Count() };
这将告诉我上述每个选项都出现一次,这不太正确,因为在这种情况下,上面的 MV 和 MV 的概述是相同的。我需要代码来理解这一点。
这就是我要寻找的,而不是如何使它能够处理未知数量的组合。
谢谢