using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Caching;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
MemoryCache.Default.Add("C1", new Customer { Name = "C1" }, DateTime.Now.AddDays(1));
MemoryCache.Default.Add("C2", new Customer { Name = "C2" }, DateTime.Now.AddDays(1));
MemoryCache.Default.Add("C3", new Customer { Name = "C3" }, DateTime.Now.AddDays(1));
Console.WriteLine("Total Cached Objects: {0}", MemoryCache.Default.GetCount());
Console.WriteLine("Total cached objects of type Customer: {0}", MemoryCache.Default.OfType<Customer>().Count());
Console.Read();
}
}
public class Customer
{
public string Name { get; set; }
}
}
我将3个Customer类型的对象添加到MemoryCache中,然后尝试过滤MemoryCache以仅检索那些Customer类型的对象。
执行上面的代码后,我期待“Customer类型的总缓存对象”为3,但它返回0.
任何人都可以指出我在这里出了什么问题?
答案 0 :(得分:2)
MemoryCache相关方法的声明是
IEnumerator<KeyValuePair<string, Object>> GetEnumerator()
该方法返回KeyValue对的列表,您只需要值 看来你需要像
这样的东西// utested
MemoryCache.Default.Select(x => x.Value).OfType<Customer>().Count()