c# - MemoryCache.Default 使用 LINQ 删除

标签 c# linq memorycache

有没有一种方法可以使用 LINQ 查询从 MemoryCache.Default 中删除对象,如下所示:

MemoryCache.Default.Select(c => c.Value).OfType<CachedObjectType>().ToList().RemoveAll(k => k.ZipCode == "11111");

这不会从 MemoryCache.Default 实例中删除对象。

最佳答案

由于您正在预测您正在使用一个新列表,而不是原始列表,因此 LINQ 不是进行变异的正确工具 - 而且您需要删除项目的键,而不是值。

这应该有效:

var itemsToRemove = MemoryCache.Default
                               .Where( x=> x.Value is CachedObjectType &&
                                          (x.Value as CachedObjectType).ZipCode == "11111")
                               .Select(x=> x.Key)
foreach(var key in itemsToRemove)
    MemoryCache.Default.Remove(key);

关于c# - MemoryCache.Default 使用 LINQ 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875398/

相关文章:

sql - UseDatabaseNullSemantics 仍然生成 NULL 检查

c# - .NET 4 之前的内存缓存

azure - 无法使用Azure Function App使用内存缓存

c# - 使用对象作为键时.Net MemoryCache Miss

c# - UWP 绑定(bind)到依赖属性

c# - 为什么 IOrderedEnumerable 不重新实现 .Contains() 以获得性能

c# - 获取数量缺货的日期

C# Linq groupby 方法语法

c# - 无法正确绑定(bind) DataGrid 和 ObservableCollection

c# - 我可以在定义它的解决方案中使用 roslyn 分析器吗?