繁体   English   中英

如何对多键字典进行部分搜索

[英]How to do partial search on multiple keys dictionary

我创建了一个多键字典,因为(registrantsFields是可枚举的类型)

var registrantsRepository = registrantsFields.ToDictionary(c => Tuple.Create(c.RegistrantID, c.FieldID, c.DataID));

我用ContainsKey搜索字典为

if (registrantsRepository.ContainsKey(Tuple.Create(registrantId, fieldId, dataId)))

到目前为止,它工作正常。

但是我只想用2个键来搜索字典,即,对于某些registrantId和fieldId,什么字典包含什么,但具有任何dataId。 换句话说,我喜欢找到所有类似

var entries = registrantsRepository(Tuple.Create(registrantId, fieldId, *))

应该如何做(也许在Linq中)? 谢谢。

我只是创建一个单独的Lookup。

var registrantsByIdAndField = registrantsFields
    .ToLookup(r => Tuple.Create(c.RegistrantID, c.FieldID));

然后,您仍然可以使用以下命令进行快速查找:

var entries = registrantsByIdAndField[Tuple.Create(registrantId, fieldId)];

没有这样的通配符搜索,但是有一种方法可以忽略您在搜索时不感兴趣的那些字段。

遍历Keys的集合,引用您想要匹配的Tuple的属性。 您可以使用LINQ的Any方法来执行此操作。

if (registrantsRepository.Keys.Any(x => x.Item1 == registrantId && x.Item2 == fieldId)
{

}

所有好的答案都在这里。 ToLookup是您的选择吗?

https://msdn.microsoft.com/zh-CN/library/bb549073(v=vs.100).aspx

编辑:才意识到@StriplingWarrior击败了我!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM