在更新特定员工详细信息后,我在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>,
我无法直接操作缓存对象。我无法调用这些方法 FirstOrDefault,Remove,Add
答案 0 :(得分:0)
正如我的评论所述,我无法看到不使用FirstOrDefault的理由。 IEnumebles无法修改。所以你必须采用沉重,性能非常好的方式并创建一个没有特定项目的新IEnumerable( IENumerable.Except(要排除的项目数组))然后你要用另一个序列连接它,其中包含你的要添加的新元素。
var empToUpdate = AllEmployees.FirstOrDefault(i => i.EmpId== Employee.EmpId);
if (empToUpdate != null)
{
AllEmployees = AllEmployees.Except(new[]{empToUpdate}).Concat(new[] { empToUpdate});
}
无论如何我在这段代码中没有看到任何意义,因为你正在移除对象并立即再次添加它。