当每个键共享一个值时,我试图生成一个字符串键组合列表,下面是我的代码的摘录
var keyCombos = new List<List<string>>();
var dict = new Dictionary<string, List<int>>();
dict.Add("A", new List<int>() { 1, 2, 3 });
dict.Add("B", new List<int>() { 1, 2, 3, 4 });
dict.Add("C", new List<int>() { 1, 4, 5 });
上面是一个字典,其中包含一个字符串 Key 和一个整数列表作为其值,该keyCombos列表将保存共享整数列表值的所有键组合,我的预期输出keyCombos如下
["A","B","C"] //1 is common
["A","B"] //1,2,3 are common
["B","C"] //1,4 are common
["C"] //5
组合的顺序并不重要,到目前为止,我的代码使用各种foreach循环,我只能组合 2 个键,而不是 1 或 3。
foreach(var k1 in dict.Keys)
{
List<int> a1 = dict[k1];
foreach (var k2 in dict.Keys)
{
if (k1 != k2)
{
List<int> a2 = dict[k2];
if(a1.Intersect(a2).Count()>0)
{
var matches = false;
foreach(var combo in keyCombos)
{
if ((combo.Contains(k1)) && (combo.Contains(k2)))
{
matches = true;
}
}
if (!matches)
{
keyCombos.Add(new List<string>() { k1, k2 });
}
}
else
{
keyCombos.Add(new List<string>() { k1 });
}
}
}
}
呼如林
相关分类