c# - 如何在 2 个不同大小的字符串数组中查找所有可能的字符串组合
问题描述
我遇到了一个特殊的问题,经过长时间的搜索,我找不到任何解决方案。这是我的问题:
我有两个字符串数组:
var arr1 = new[] { "UserId", "BookId", "BookStoreId", "Appid" };
var arr2 = new[] {"Same", "Unique", "Repetitive"};
我希望 Result 具有所有可能的组合,例如:
结果(应为表格格式):
列 - UserId BookId BookStoreId Appid
- 第 1 行 相同 相同 相同 相同
- Row2 相同 相同 相同 唯一
Row3 相同 相同 相同 重复
第 4 行 相同 相同 唯一 相同
Row5 相同 相同 重复 相同
Row6 相同 相同 唯一 唯一
- Row6 相同 相同 唯一 重复
- Row7 相同 相同 重复 唯一
Row8 相同 相同 重复 重复
Row9 相同 唯一 相同 相同
- 第 10 行 相同 唯一 唯一 相同
- 第 11 行相同重复相同相同等等...
行和列仅用于符号目的。
我希望我的问题现在很清楚。
我应该创造 64 个独特的组合。
我尝试了很多方法,包括笛卡尔积,但这并没有解决我的问题。
解决方案
似乎你需要一个与重复的组合。检查这个答案https://stackoverflow.com/a/25824818/1007620
概括:
static IEnumerable<String> CombinationsWithRepition(IEnumerable<string> input, int length)
{
if (length <= 0)
yield return "";
else
{
foreach(var i in input)
foreach(var c in CombinationsWithRepition(input, length-1))
yield return i + ',' + c;
}
}
然后
string[] items = {"UserId", "BookId", "BookStoreId", "Appid", "Same", "Unique", "Repetitive"};
foreach (var c in CombinationsWithRepition(items, 4))
Console.WriteLine (c);
推荐阅读
- php - 将相同的键组合在一个数组中并在 php 中打印
- django - 用户可以在 Django 中拥有其他用户吗?
- laravel - 如何在没有注册用户身份验证的情况下保护公共 API 请求
- javascript - Angular 8解析器未解析
- arrays - 过滤和映射数组时的SwiftUI EXC_BAD_INSTRUCTION
- linux - Julia 1.4.1 无法启动,但 1.3.1 没有。问题是什么?
- python - 如何在 Django select2 中使用依赖的链式下拉列表
- excel - Excel 将内容从一张纸复制到另一张纸,无需 VBA/宏
- python - 使用 BeautifulSoup 进行网页抓取问题
- apache-flink - Flink Stateful Functions 2.0 异步等待期间的多次调用