当每个键共享一个值时,我试图生成一个字符串键组合列表,下面是我的代码的摘录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 }); } } } }
3 回答
呼如林
TA贡献1798条经验 获得超3个赞
我相信最简单的方法是首先从字典中获取不同的整数,然后遍历它们并使用 linq 获取该整数在列表中的键。喜欢:
var distinctKeyCombos = dict.SelectMany(x => x.Value).Distinct();
foreach(var i in distinctKeyCombos)
{
var keys = dict.Where(p => p.Value.Contains(i)).Select(p => p.Key);
}
- 3 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消