public ICacheItem[] Get(Predicate <string> predicate) { var items = new ICacheItem[0]; var keys = Items.Keys.ToList().Where(x => predicate(x)); foreach (var key in keys) { ICacheItem value; if (Items.TryGetValue(key, out value)) { items = items.Append(value); } } return(items); }