[英]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.