所以我有一个带字符串的方法。该字符串由一个常量值和2个bool,2个常量int以及一个可以是10,20或30的int构成。这将是一个字符串,其中参数由下划线分隔。
示例:
string value = "horse"
string combination1 = value+"_true_false_1_1_20";
dostuff(combination1);
我需要通过
运行每一种可能的组合如何获取此常量值并通过所有可能组合的方法运行它?
构建字符串:" VALUE_BOOL1_BOOL2_CONSTINT1_CONSTINT2_INT1"
Possibilities
VALUE = Horse
BOOL1 = True, False
BOOL2 = True, False
CONSTINT1 = 1
CONSTINT2 = 1,
INT1 = 10, 20, 30
如何获取预定义的值字符串并创建所有可能的组合并通过doStuff(字符串组合)方法运行它们?
答案 0 :(得分:4)
您可以使用非常易读的LINQ语句执行此操作,而无需使用循环:
public static List<String> Combis(string value)
{
var combis =
from bool1 in new bool[] {true, false}
from bool2 in new bool[] {true, false}
let i1 = 1
let i2 = 1
from i3 in new int[] {10, 20, 30}
select value + "_" + bool1 + "_" + bool2 + "_" + i1 + "_" + i2 + "_" + i3;
return combis.ToList();
}
编辑:请记住,必须在上述解决方案中创建多个数组,因为the in-clause is evaluated multiple times。您可以将其更改为以下内容以避免这种情况:
public static List<String> Combis(string value)
{
bool[] bools = new[] {true, false};
int[] ints = new[] {10, 20, 30};
var combis =
from bool1 in bools
from bool2 in bools
let i1 = 1
let i2 = 1
from i3 in ints
select value + "_" + bool1 + "_" + bool2 + "_" + i1 + "_" + i2 + "_" + i3;
return combis.ToList();
}