首页 > 解决方案 > 在字典中查找值>

问题描述

我有一个带有 int 键和 List 值的字典

我想知道键或值是否包含特定整数并获取它的相关键。

例子:

Dictionary<int, List<int>> removableStuff = new Dictionary<int, List<int>>();

removableStuff.Add(1, new List<int> {1});
removableStuff.Add(3, new List<int> {9,33,35});
removableStuff.Add(2, new List<int> {1,65,32,3});

我想找到数字 3。由于数字 3 可以作为键和值找到,因此输出将是:3、2。

标签: c#linqdictionary

解决方案


这应该会产生预期的结果:

var num = 3;
var keys = removableStuff.Where(i => i.Key.Equals(num) || i.Value.Any(num.Equals))
                         .Select(i => i.Key);

如果您不想处理 Enumerable,您可以选择.ToList()在 之后调用。.Select()

i.Value.Any(num.Equals)也可以简化为,但是当i.Value.Contains(num)我使用 Linq 时,我也喜欢使用Any这种东西。(只是个人喜好)

尽管如此,这是非常基本的 Linq,我相信您会在询问之前找到答案,如果您会看的话。


推荐阅读