在函数中返回 LINQ 查询的结果时,我遇到了很多Collection was modified; enumeration operation may not execute
错误情况,就像这样......(我应该添加函数作为接口的实现,结果留下这个模块以供使用在另一个。)
Public Function GetTheFuzzyFuzzbuzzes() As IEnumerable(of FuzzBuzz) _
Implements IFoo.GetTheFuzzyFuzzBuzzes
Return mySecretDataSource.Where(Function(x) x.IsFuzzy)
End Function
.ToArray
如果基础数据有可能被更改,我是否应该在函数或属性 getter 中返回 LINQ 查询的结果时始终调用?我知道这样做会降低效率,但我觉得这样做是安全的,因此应始终避免出现时间耦合问题。
编辑:
让我更好地解释问题域。
我们有一个基于图形的主要关注领域的实现,这是一个优化问题。实体表示为图形节点。用各种成本和其他参数加权的边表示节点之间的关系。当用户操作数据时,我们会创建不同的边,并根据当前状态评估他们可以采取的各种选项,从而为他们提供有关每个选项结果的反馈。其他用户和程序对服务器上的数据所做的更改会通过推送技术立即传播到客户端。我们使用了很多线程...
...所有这一切意味着我们有很多事情以非常异步的方式发生。
我们的程序被分成模块(基于单一责任原则),有一个合同项目和一个在运行时解决的实施项目,这意味着我们严重依赖接口。我们通常使用 IEnumerable 在模块之间传递数据(因为它们是不可变的)。