我有一个webapi(asp.net),我将一个List放在ObjectCache
中List<User>data = GetUser();
ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(30);
cache.Add("userList", data, policy);
我在类中检索List:
List<User> userList = new List<User>();
ObjectCache cache = MemoryCache.Default;
List<User> cacheList = List<User>)cache.Get("userList");
if(cacheList != null){
userList = cacheList;
} else{
userList = GetUserListAndCacheTheList();
}
当我现在在用户列表上进行任何linq查询时,它确实从cacheList获取了它的内容,这需要花费很多时间。但只是在第一次,如果我再次通过webapi网址调用该类,任何linq查询都很快。
//Why
userlist = userList.Where(user => user != null ).toList<User>();
似乎有些东西被重新计算了,但是不知道是什么或为什么......有人可以解释这种行为吗?