我有一个显示错误的linq查询:

如果集合的源是linq查询,我在任何时候尝试访问我正在迭代的变量时都会看到此错误.我想这个错误只是告诉我变量可能会改变,或类似的东西?
Jon*_*Jon 21
此错误告诉pubConfig您查询内部的引用将使用pubConfig 评估查询时的值,而不是在您定义查询并将其存储的时间pubConfigSettings.
实际上,如果"在现场"评估查询,您就可以了.如果您将其保留以供以后评估,以及pubConfig同时更改的值,您将遇到意外结果.
Mar*_*ers 11
您正在关闭被认为有害的循环变量 .查询引用变量,而不是创建查询时变量的值.目前尚不清楚它是否会在您的特定代码示例中导致您出现问题(这取决于您对已创建的查询执行的操作),但通常您应该避免这种情况,因为它可能导致难以调试问题.
一个简单的解决方案是在查询中引用它之前获取循环变量的副本.
foreach (var pubConfig in ...)
{
var pubConfig2 = pubConfig;
// Use pubConfig2 instead of pubConfig in the query.
}
Run Code Online (Sandbox Code Playgroud)