我想你想所有的組合爲你的價值觀....
這裏是做在C#泛型方法...
static IEnumerable<IEnumerable<T>> Combinations<T>(IEnumerable<T> list, int length)
{
if (length == 1) return list.Select(t => new T[] { t });
return Combinations(list, length - 1)
.SelectMany(t => list, (t1, t2) => t1.Concat(new T[] { t2 }));
}
你這樣稱呼它?
var groups = new List<string>() { "R1", "R2", "R3" };
var values = new List<string>() { "AA", "AB", "BB" };
var combinations = Combinations(values, groups.Count);
var i = 0;
var stringFormat = string.Join(", ", groups.Select(x => x +"={"+ i++ +"}"));
// stringFormat looks like "R1={0}, R2={1}, R3={2}"
foreach (var value in combinations)
{
var arrayOfValues = value.ToArray(); // each value is a list of the combinations.
Console.WriteLine(string.Format(stringFormat, arrayOfValues));
}
所以我已經包括做哪一個更容易遵循硬編碼的方式...你提到你的經驗不足
var values = new List<string>() { "AA", "AB", "BB" };
foreach (var value1 in values)
{
foreach (var value2 in values)
{
foreach (var value3 in values)
{
Console.WriteLine(string.Format("R1 = {0}, R2 = {1}, R3 = {2}", value1, value2, value3));
}
}
}
隨着輸出看上去就像這樣......
R1=AA, R2=AA, R3=AA
R1=AA, R2=AA, R3=AB
R1=AA, R2=AA, R3=BB
R1=AA, R2=AB, R3=AA
R1=AA, R2=AB, R3=AB
R1=AA, R2=AB, R3=BB
R1=AA, R2=BB, R3=AA
R1=AA, R2=BB, R3=AB
R1=AA, R2=BB, R3=BB
R1=AB, R2=AA, R3=AA
R1=AB, R2=AA, R3=AB
R1=AB, R2=AA, R3=BB
R1=AB, R2=AB, R3=AA
R1=AB, R2=AB, R3=AB
R1=AB, R2=AB, R3=BB
R1=AB, R2=BB, R3=AA
R1=AB, R2=BB, R3=AB
R1=AB, R2=BB, R3=BB
R1=BB, R2=AA, R3=AA
R1=BB, R2=AA, R3=AB
R1=BB, R2=AA, R3=BB
R1=BB, R2=AB, R3=AA
R1=BB, R2=AB, R3=AB
R1=BB, R2=AB, R3=BB
R1=BB, R2=BB, R3=AA
R1=BB, R2=BB, R3=AB
R1=BB, R2=BB, R3=BB
你能解釋一下什麼叫3組是什麼意思? – user1759572
對不起,不知道你的問題是什麼。 –
「重複排列」是您正在尋找的谷歌查詢 – ElKamina