本文不是讲述如何使用缓存的,上面是让大家了解使用缓存都会发生哪些可能,只要知道使用Cache.Insert(key,value)方法可以添加缓存就可以了。最后再说一下当我们使用Cache.Insert(key,value)插入缓存时,虽然没有设置过期时间,但是当服务器内存空间不足的时候,依然会将缓存移除。
基于业务对象筛选其实就是基于List<Order>进行筛选(当然你的业务对象也可能不是List<Order>),思路似乎很简单,我们先通过一个重载的GetList()方法获取全部列表,在这个GetList()方法中应用缓存。然后遍历业务对象,选出它符合条件的项目,然后将符合条件的项目加入到新列表中,最后返回新列表。
// 获取全部列表
public static List<Order> GetList() {
List<Order> list = HttpContext.Current.Cache["fullList"] as List<Order>;
if (list == null) {
list = GetList("Select OrderId, CustomerId, ShipCountry, OrderDate From Orders");
// 添加缓存,永不过期(可以在删除、更新操作时手动让缓存过期)
HttpContext.Current.Cache.Insert("fullList", list);
}
return list;
}
// 根据一个全部项目的列表,以及年、月、日对列表进行筛选
public static List<Order> GetList(List<Order> fullList, int year, int month, int day)
{
List<Order> list = null;
bool canAdd; // 标记变量,说明当前项目是否符合添加的条件
if (fullList != null)
{
list = new List<Order>();
foreach (Order item in fullList)
{
canAdd = true;
if (year != 0 && year != item.Date.Year)
canAdd = false;
if (month != 0 && month != item.Date.Month)
canAdd = false;
if (day != 0 && day != item.Date.Day)
canAdd = false;
if (canAdd == true) // 如果全部条件满足,那么加入列表
list.Add(item);
}
}
return list;
}
上面无参