将dictionary的键与List的值进行比较,并返回所有匹配的值,包括重复值



我有一个字典<字符串,字符串>以及另一个列表。我试图实现的是一个linq查询,将字典与列表进行比较,并获得字典中存在的所有值(将列表与字典中的关键字进行比较(与列表匹配,包括列表中的重复值。例如,我正在使用

Dictionary<string, string> key = new Dictionary<string, string>();
key.Add("RC", "rick castolle");
key.Add("MS", "Robet sam");
key.Add("VC", "John David");
key.Add("KS", "Kelly Thomson");
List<string> a = new List<string>();
a.Add("JC"); a.Add("KS"); a.Add("RC"); a.Add("KS");
var output = key.Where(s => a.Contains(s.Key)).Select(s => new object[] {s.Value }).ToList();

它将输出返回为rick-castolleKelly Thomson

但我的预期产出是rick-castolleKelly ThomsonKelly Thomson

因为它们是列表中Ks的三个重复项。如何实现我的输出以获得列表中存在的重复值。

您可以尝试从另一侧(列表(进行查询。

a.Where(i => key.ContainsKey(i)).Select(i => key[i])

但如果你能使用foreach,它会更有效,在foreach中,你只会为每一项检查字典一次:

var result = new List<string>();
foreach (var i in a)
{
if (key.TryGetValue(i, out var val)
result.Add(val);
} 

相关内容

  • 没有找到相关文章

最新更新