【发布时间】:2018-05-09 21:46:09
【问题描述】:
当每个键共享一个值时,我正在尝试生成一个字符串键组合列表,下面是我的代码的摘录
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 });
上面是一个字典,其中包含一个字符串键和一个整数列表作为其值,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 });
}
}
}
}
【问题讨论】:
-
您应该添加您当前的代码
various foreach loops -
我已经更新了
标签: c# list dictionary