c#从哈希集中删除最旧的项
我有一个简单的机制,可以将项目添加到哈希集中,但当它达到一定数量的项目时,我希望它删除最旧的项目,所以我尝试了RemoveWherec#从哈希集中删除最旧的项,c#,C#,我有一个简单的机制,可以将项目添加到哈希集中,但当它达到一定数量的项目时,我希望它删除最旧的项目,所以我尝试了RemoveWhere private void RestrictResponseCache() { if (ResponseCahce.Count > this.ResponseCahceLimit * 2) { ResponseCahce.RemoveWhere(response =
private void RestrictResponseCache()
{
if (ResponseCahce.Count > this.ResponseCahceLimit * 2)
{
ResponseCahce.RemoveWhere(response => ResponseCahce.Count < this.ResponseCahceLimit * 2);
}
}
private void RestrictResponseCache()
{
如果(responsecache.Count>this.responsecachelimit*2)
{
responsecache.removehere(response=>responsecache.Count
但它似乎并没有移除最古老的物品,它什么也没做。你知道会出什么问题吗 您想从
ResponseCahce
中删除多少个项目,例如,我有20个项目的限制,因此据我所知,如果项目编号已超过,它将检查每个添加项目,因此从最后一个项目中删除所有低于20的项目。这不起作用。首先remove其中
需要一个谓词来匹配要删除的项。其次,您最终只会删除随机选择的项目,因为HashSet不会维护您添加项目的顺序。您是否有任何属性来处理顺序,例如,CreatedDateTime
,Number/ID
,您可能正在寻找一种称为LRU缓存的东西