Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#从哈希集中删除最旧的项_C# - Fatal编程技术网

c#从哈希集中删除最旧的项

c#从哈希集中删除最旧的项,c#,C#,我有一个简单的机制,可以将项目添加到哈希集中,但当它达到一定数量的项目时,我希望它删除最旧的项目,所以我尝试了RemoveWhere private void RestrictResponseCache() { if (ResponseCahce.Count > this.ResponseCahceLimit * 2) { ResponseCahce.RemoveWhere(response =

我有一个简单的机制,可以将项目添加到哈希集中,但当它达到一定数量的项目时,我希望它删除最旧的项目,所以我尝试了RemoveWhere

    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缓存的东西