小编Luk*_*ves的帖子

使用Linq进行复制/过滤会在foreach循环中产生动态结果吗?

所以我创建了一个我想删除的项目字典的投影.

var toRemoveList =
    this.outputDic.Keys.Where(key =>
        this.removeDic.ContainsKey(key));
Run Code Online (Sandbox Code Playgroud)

然后我遍历从实际字典中删除的结果

        foreach(var key in toRemoveList)
            this.outputDic.Remove(key);
Run Code Online (Sandbox Code Playgroud)

但是在该foreach期间抛出一个异常,表示该循环期间修改了列表.但是,怎么这样呢?linq查询是否有点动态,每次字典更改时都会重新评估?查询结尾处的一个简单的.ToArray()调用解决了问题,但是imo,它甚至不应该首先出现.

c# linq foreach

2
推荐指数
1
解决办法
740
查看次数

标签 统计

c# ×1

foreach ×1

linq ×1