我有一本带有int键和列表值的字典
我想找出键或值是否包含特定的整数并获取相关的键。
示例:
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。
答案 0 :(得分:5)
这应该产生预期的结果:
models.Delegate.belongsTo(models.User, {foreignKey: 'createdBy'});
如果不想处理Enumerable,可以选择在var num = 3;
var keys = removableStuff.Where(i => i.Key.Equals(num) || i.Value.Any(num.Equals))
.Select(i => i.Key);
之后调用.ToList()
。
.Select()
也可以简化为i.Value.Any(num.Equals)
,但是当我使用Linq时,我也喜欢将i.Value.Contains(num)
用于此类内容。 (仅出于个人喜好)
尽管如此,这是非常基本的Linq,我相信您会在询问之前找到答案,
答案 1 :(得分:0)
类似于Tobias的答案的方法是使用Contains
而不是Any(Equals)
:
Dictionary<int, List<int>> removableStuff = new Dictionary<int, List<int>>
{
{1, new List<int> {1}},
{3, new List<int> {9, 33, 35}},
{2, new List<int> {1, 65, 32, 3}}
};
int find = 3;
var matches = removableStuff.Where(item => item.Key == find || item.Value.Contains(find));
foreach (var match in matches)
{
Console.WriteLine($"{match.Key}: {string.Join(", ", match.Value)}");
}