C# 从字典中同时获取多个值

C# 从字典中同时获取多个值,c#,.net,linq,C#,.net,Linq,我有两个字典,第一个字典的键与第二个字典中的多个重复值匹配: var firstDic = new Dictionary<string, string>(); firstDic.Add("123", "Value1"); firstDic.Add("456", "Value2"); firstDic.Add("789", "Value3"); firstDic.Add("000", "Value4"); var secondDic = new Dictionary<strin

我有两个字典,第一个字典的键与第二个字典中的多个重复值匹配:

var firstDic = new Dictionary<string, string>();
firstDic.Add("123", "Value1");
firstDic.Add("456", "Value2");
firstDic.Add("789", "Value3");
firstDic.Add("000", "Value4");

var secondDic = new Dictionary<string, string>();
secondDic.Add("5d866ac0-abab-46c9-a951-e7b0cf25dc72", "123");
secondDic.Add("217ddba3-977f-45b8-a7f6-80c6fbcef16e", "123");
secondDic.Add("99867f65-22c1-4b6c-b1bb-3fa73af317a9", "456");
secondDic.Add("203f9cf7-98f8-40fc-a4ba-da3a62c7d795", "456");
secondDic.Add("9bdafb4c-4d5a-4c87-8b9d-d9b98473390a", "789");
secondDic.Add("d3a245f0-cc5b-4c08-aaff-475d64e27e8d", "000");
是否可以从第二个字典(secondDic)中提取与第一个字典键的值匹配的所有键,并将它们存储在某些数据结构中


建议中的Tnx

那么您不需要使用
FirstOrDefault()
,只需使用
Where()
即可返回集合:

 var myKeys = secondDic.Where(x => x.Value == item.Key);
然后,您可以对其进行迭代:

foreach(var item in myKeys)
{

}
或者执行任何需要应用的业务逻辑。

这可能会有所帮助

 var result = secondDic.Where(s => firstDic.Any(f => f.Key == s.Value))
                       .Select(s => s.Key)
                       .ToList();

你能不能用
Where
代替
FirstOrDefault
?这样解释会给你非常准确的答案。我不确定你是否需要。字典是功能强大的容器,对其进行预处理相对较慢。你能更详细地解释一下你的问题吗?例如,您将如何使用之后的数据?你为什么用两本字典?
 var result = secondDic.Where(s => firstDic.Any(f => f.Key == s.Value))
                       .Select(s => s.Key)
                       .ToList();