c# – 字典:具有相似功能的搜索键字符串
发布时间:2020-12-15 04:08:07 所属栏目:百科 来源:网络整理
导读:我想用一个类似的功能在字典中搜索我的键.我想把钥匙从“a”开始,或者他们的第三个字母是“e”,或者他们的4rt字母不是“d” 在sql中,可以编写查询“where(key like’a’)and(key不像’d__’)”我想为Dictionary设置此功能.你有什么算法建议? 谢谢 ! 解决方
我想用一个类似的功能在字典中搜索我的键.我想把钥匙从“a”开始,或者他们的第三个字母是“e”,或者他们的4rt字母不是“d”
在sql中,可以编写查询“where(key like’a’)and(key不像’d__’)”我想为Dictionary设置此功能.你有什么算法建议? 谢谢 ! 解决方法
虽然这将是表扫描的SQL等价物,但您可以使用LINQ或IEnumerable< T>搜索您的字典的所有值匹配模式的所有值的扩展方法:
扩展方法: var values = dictionary.Where(pv => pv.Key.StartsWith("A") || (pv.Key.Length >= 3 && pv.Key[2] == 'e') || pv.Key.Length < 4 || pv.Key[3] != 'd').Select(pv => pv.Value); LINQ: var values = (from pv in dictionary where pv.Key.StartsWith("A") || (pv.Key.Legnth >= 3 && pv.Key[2] == 'e') || pv.Length < 4 || pv.Key[3] != 'd' select pv.Value); 请注意,这两个谓词的最后一部分属于您的“第四个字母不是”d“,我认为这是一个长度为三个字符(或更少)的字符串,将与之匹配,如果您的意思是字符串在至少四个字符,其第四个字符不是“d”,那么变化应该是显而易见的. 请注意,Dictionary类的主要(性能)优势是使用基于哈希的键查找(在平均值和最佳情况下)为O(1).使用这样的线性搜索是O(n),所以这样的东西一般比普通的键查找慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |