在HttpContext.Cache中搜索时使用通配符

时间:2014-11-05 07:08:22

标签: c# regex sqlcachedependency

有没有办法使用通配符或正则表达式来搜索和删除HttpContext.Cache中的项目?

我可以在我的缓存“item_1”,“item_2”,...,“item_n”中,我想从缓存中删除与模式“item_ *”的键相关的所有值。如何在不检查项目是否存在的情况下实现该目标,然后将其删除?

例如:

而不是:

HttpContext.Current.Cache.Remove("item_1")
HttpContext.Current.Cache.Remove("item_2")
HttpContext.Current.Cache.Remove("item_3")

我想要类似的东西:

HttpContext.Current.Cache.Remove("item_*")

2 个答案:

答案 0 :(得分:2)

你可以循环这样的项目:

foreach(var key in HttpContext.Current.Cache)
{
    if (key.StartsWith("item_"))
    {
        // remove the corresponding item here.
    }
}

基本示例,需要进行一些调整才能与您的实现相匹配。

AFAIK您无法删除基于通配符的项目,因为您需要特定的密钥。 (请证明我错了)

答案 1 :(得分:0)

^HttpContext\.Current\.Cache\.Remove\("item_.*?"\)$

您可以尝试使用empty string替换。请参阅演示。

http://regex101.com/r/sU3fA2/65