我有一个字典<字符串,字符串>以及另一个列表。我试图实现的是一个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);
}