从Sitecore项目中删除渲染

从Sitecore项目中删除渲染,sitecore,rendering,removeall,Sitecore,Rendering,Removeall,我必须通过渲染id删除渲染的所有实例。我尝试了下面的代码,但它不起作用 LayoutField LayoutField=新的LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]); LayoutDefinition LayoutDefinition=LayoutDefinition.Parse(layoutField.Value); DeviceDefinition DeviceDefinition=layoutDefinition.Get

我必须通过渲染id删除渲染的所有实例。我尝试了下面的代码,但它不起作用

LayoutField LayoutField=新的LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
LayoutDefinition LayoutDefinition=LayoutDefinition.Parse(layoutField.Value);
DeviceDefinition DeviceDefinition=layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());
//创建渲染定义并添加子布局或渲染的引用
RenderingDefinition RenderingDefinition=新的RenderingDefinition();
renderingDefinition.ItemID=子布局ID;
var d=layoutDefinition.GetDevice(deviceDefinition.ID.ToString());
d、 移除(渲染定义);
item.Editing.BeginEdit();
layoutField.Value=layoutDefinition.ToXml();
item.Editing.EndEdit();
我提到:


尝试下面的代码。我没有对它进行测试,但它没有创建一个
RenderingDefinition
对象并将其从列表中删除(这不会起作用,因为它不是对象的同一实例),而是通过比较
ItemId
属性过滤现有的渲染数组:

LayoutField LayoutField=新的LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
LayoutDefinition LayoutDefinition=LayoutDefinition.Parse(layoutField.Value);
DeviceDefinition DeviceDefinition=layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());
var d=layoutDefinition.GetDevice(deviceDefinition.ID.ToString());
IEnumerable renderingsArray=d.Renderings.ToArray().Cast();
d、 Renderings=newarraylist(renderingsArray.Where(r=>r.ItemID!=sublayoutId.ToList());
item.Editing.BeginEdit();
layoutField.Value=layoutDefinition.ToXml();
item.Editing.EndEdit();

Getting error“无法隐式地将行中的类型'System.Collections.Generic.IEnumerable'转换为'int'”#6I已更新答案,以显式使用
IEnumerable
,而不是使用
var
。请立即尝试。您将在什么时候删除渲染?这是一次性处决吗?