更新包含员工集合的缓存对象
本文关键字:缓存 对象 集合 包含员 更新 | 更新日期: 2023-09-27 18:31:57
我有一个员工集合,在更新特定员工详细信息后存储在MemoryCache.Now
中,我想使用更新的员工详细信息更新相同的缓存对象。像这样:
var AllEmployees= cache.Get("AllEmployees");
if(AllEmployees != null)
{
var empToUpdate = AllEmployees.FirstOrDefault(i => i.EmpId== Employee.EmpId);
if (empToUpdate != null)
{
AllEmployees.Remove(empToUpdate );
AllEmployees.add(empToUpdate );
}
}
但是由于缓存是内存缓存并且它已缓存IEnumerable<Employee>,
因此我无法直接操作缓存对象。我无法将这些方法称为 FirstDefault,删除,添加
正如我的评论中提到的,我看不出不使用FirstOrDefault的理由。IEnumerables是不可修改的。因此,您必须采取一种繁重的,性能上不受欢迎的方式,创建一个没有特定项目的新IEnumerable(IENumerable.Except(要排除的项目数组)),然后您将将其与另一个后续连接,其中包含要添加的新元素。
var empToUpdate = AllEmployees.FirstOrDefault(i => i.EmpId== Employee.EmpId);
if (empToUpdate != null)
{
AllEmployees = AllEmployees.Except(new[]{empToUpdate}).Concat(new[] { empToUpdate});
}
无论如何,我在这段代码中看不到任何意义,因为您正在删除对象并立即再次添加它。