我正在尝试从字典中删除一个条目(注意:关联数组上下文).删除基于给定的数字.任意数量的键都可以包含该数字和其他文本.我现在正在做的是......
var results = from result in CGlobals.orders.Keys
where Regex.IsMatch(result, cmbJobNum.Text + "*")
select result;
foreach (string result in results)
CGlobals.orders.Remove(result);
Run Code Online (Sandbox Code Playgroud)
我收到一个无效的操作异常,它说明该集合已被修改.我在这里做错了什么,我该如何解决这个问题?
问题是LINQ中的延迟执行.用这个:
var results = (from result in CGlobals.orders.Keys
where Regex.IsMatch(result, cmbJobNum.Text + "*")
select result).ToList();
foreach (string result in results)
CGlobals.orders.Remove(result);
Run Code Online (Sandbox Code Playgroud)
说明:
LINQ中的延迟执行功能执行查询而不是您定义它的位置,但仅在您枚举它时,即在foreach循环中执行.这意味着,您循环遍历CGlobals.orders.Keys枚举,同时从字典中删除将更新密钥枚举的项目.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |