将字典的键与 List 的值进行比较,并返回所有匹配的值,包括重复值
Posted
技术标签:
【中文标题】将字典的键与 List 的值进行比较,并返回所有匹配的值,包括重复值【英文标题】:Compare keys of dictionary with values of List and return all the matching values including duplicates 【发布时间】:2020-12-23 03:56:17 【问题描述】:我有一个 Dictionary
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();
它返回输出为 里克·卡斯托尔 凯利汤姆森
但我的预期输出是 里克·卡斯托尔 凯利汤姆森 凯利汤姆森
因为它们是列表中 Ks 的三个重复项。 我如何实现我的输出以获取列表中存在的重复值。
【问题讨论】:
【参考方案1】:您可以尝试从另一端(列表)进行查询。
a.Where(i => key.ContainsKey(i)).Select(i => key[i])
但如果您可以使用 foreach 会更有效,您将只为每个项目检查一次字典:
var result = new List<string>();
foreach (var i in a)
if (key.TryGetValue(i, out var val)
result.Add(val);
【讨论】:
以上是关于将字典的键与 List 的值进行比较,并返回所有匹配的值,包括重复值的主要内容,如果未能解决你的问题,请参考以下文章