gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:51:06 24 4
gpt4 key购买 nike

我想用类似的功能在字典中搜索我的关键字。我想拿 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com