c# - 字典 : search key strings with a like feature

标签 c# dictionary

我想用类似的功能在字典中搜索我的关键字。我想拿 key 以“a”开头或者他们的第三个字母是“e”或者他们的第四个字母不是“d”

在 sql 中可以编写查询“where (key like 'a') and (key not like 'd__') “我想拥有这个功能对于字典。您有什么算法建议吗?

谢谢!

最佳答案

虽然这将是表扫描的 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);

林克:

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“有关。我认为这意味着一个长度为三个字符(或更少)的字符串将与此匹配。如果您的意思是string 至少有四个字符并且它的第四个字符不是“d”,那么变化应该是显而易见的。

请注意,Dictionary 的主要(性能)优势类使用基于散列的键查找,(在平均和最佳情况下)是 O(1)。使用像这样的线性搜索是 O(n),所以这样的事情通常比普通的键查找慢。

关于c# - 字典 : search key strings with a like feature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786259/

相关文章:

c# - 在 C# 中,根据路径查找唯一的文件 ID

python - 在python中更新字典

python - 从多个词典创建一个 csv 文件?

c# - 在 x86 或 x64 的 Windows 应用商店应用程序中使用 bing map ?

c# - 即使收件人之一无效,如何在 C# 中发送电子邮件?

c# - 在 Click 事件中从 TextBox 中选择文本

dictionary - 无法在 MKDirections 中工作以分两点获取 iOS 7 map 方向和路线吗?

c# - 什么是适用于表单繁重的 Web 应用程序的良好 C# PDF 库?

Python:如何查询对象列表?

python - 将模块转换为字典