【发布时间】:2014-07-21 18:55:06
【问题描述】:
我无法理解为什么这个循环会修改我正在循环的集合中的对象,而不仅仅是循环内的tempProvider 对象。
此代码位于另一个循环中,该循环遍历县列表。该提供商一开始有 7 个办公室,然后当我第一次点击tempProvider.Offices = ... 线时,它在县内只有一个匹配的办公室,因此它会擦除 CountyPcps 中 Provider 对象的其余办公室,这影响我必须遍历办公室的其他代码。
谁能告诉我发生了什么以及我该如何纠正这个问题?
我已经尝试了一些方法,包括删除 OrderBy(x=> x.LastName,使其成为 for 循环,以及删除 CountyPcps 变量的 .ToList()。我不明白发生了什么,看起来应该很简单......
var countyPcps =
providersForCounty.Where(x =>
x.SpecialtiesAndCerts != null && x.SpecialtiesAndCerts.Any() &&
x.SpecialtiesAndCerts.Contains(specialty)).ToList();
foreach (Provider provider in countyPcps.Where(x => x.LastName != null).OrderBy(x => x.LastName))
{
Provider tempProvider = provider;
tempProvider.Offices = tempProvider.Offices.Where(x => x.County == county).ToList();
xmlSerializer.Serialize(xmlWriter, tempProvider, ns);
}
【问题讨论】: