我有一個請求緩存查找鍵,使用HttpContext.Current.Items這樣實現的通過一個特定的字符串,因此,我在想一個方法,像這樣使用HttpContext.Current.Items lambda表達式緩存
public IEnumerable<string> GetKey (Func<string, bool> condition)
,然後通過循環的結果,並清除它們(我甚至可以直接在清除清除acepting lambda表達式,我猜)。但是,如果實際上可能的話,我會試圖實施這種方法。
任何幫助?
感謝
編輯:
Servy,我試圖(一直盲目地嘗試一些東西,但更多或更少的這條路)
public IEnumerable<string> GetKeys(Func<string, bool> condition)
{
List<string> list = new List<string>();
foreach (var key in HttpContext.Current.Items.Keys)
{
if (condition(key as string))
{
list.Add(key as string);
}
}
return list;
}
但我發現了:
未設置對象實例的對象引用
我現在要試試p.s.w.g,除了它可能起作用之外,它對我來說更加優雅。
第二編輯:
我需要稍微改變p.s.w.g解決方案。我不存儲在緩存中,但其他類型的對象的字符串,所以我用這個現在
public IEnumerable<string> GetKeys (Func<string, bool> condition)
{
return HttpContext.Current.Items
.Cast<DictionaryEntry>()
.Where(e => e.Key is string && condition(e.Key as string))
.Select(e => e.Key as string);
}
和呼叫清除緩存例如這一個
public void ClearCache()
{
var ownedItemSummaryKeys = CacheCurrentCall.Instance.GetKeys(k => k.Contains("OwnedItemSummaryCurrent"));
foreach (var ownedItemSummaryKey in ownedItemSummaryKeys.ToList())
{
CacheCurrentCall.Instance.Clear(ownedItemSummaryKey);
}
}
你嘗試過什麼?你自己實施這個解決方案有什麼問題?你是否收到錯誤,錯誤的輸出或什麼? – Servy