我正在尝试在SharePoint中更新多个字段(具有相同名称)的某些属性。
我试过这个:
var site = this.Site.RootWeb;
var fields = site.Fields;
foreach (SPField field in fields)
{
if (field.Group.Contains("My Custom Columns"))
{
if (field.Title.Contains("Custom field"))
{
if (field.DefaultValue != null) {
field.DefaultValue = null;
field.Update(true);
}
}
}
}
它使用名称“自定义字段”更新第一列,但是在它给我这个错误之后:
Collection was modified; enumeration operation may not execute.
at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.MoveNext()
是否无法在foreach循环中更新对象?
答案 0 :(得分:1)
由于您在迭代时尝试修改字段集合,因此会发生此错误。
解决方案是更换线路:
foreach (SPField field in fields)
与
foreach (var field in fields.Cast<SPField>().ToList())
答案 1 :(得分:0)
我认为问题出在你的
上var activeCustomers = Customers.Where(x => x.Status == "A")
Select(x => new Customer{ Status = x.Status, Code = x.Code }).ToList();
代码行。您实际上是在修改正在循环的集合。
我建议您尝试循环并将所有字段的ID添加到
foreach (SPField field in fields)
然后对此集合执行foreach语句,获取每个字段并更新它的值。
List<GUID>
非常感谢
Truez