我想从 Sitecore.Data.Items 类型的列表中过滤/删除项目。 这就是我填写列表的方式。
List<Item> actueelItems = Sitecore.Context.Database.SelectItems("/sitecore/content/destil_nl/Home/").ToList();
我有一个检查项目是否有效的方法。这将返回 true 或 false。 我想建立一个新列表,我将调用 filteredList,其中仅包含有效项目。
实现此目标的最佳方法是什么?
顺便说一句,这是我的验证方法:
public static bool ValidateItem(Item item)
{
return ValidateItem(item, true);
}
public static bool ValidateItem(Item item, bool checkVisualization)
{
bool result = true;
if (item.Versions.Count <= 0 ||
!item.Publishing.IsValid(DateTime.Today, false) ||
(checkVisualization && item.Visualization.GetLayout(Sitecore.Context.Device) == null))
{
result = false;
}
return result;
}
目前我正在使用 itemDataBound 中的检查,但该项目仍将显示,只是具有错误的值。我想我必须过滤列表,并将过滤后的列表作为数据源。我只是不知道如何使用 ValidateItem 轻松过滤此列表。
最佳答案
我已经解决了自己的难题。 在我有列表的地方,我将只运行一个 linq .where 并验证我的项目:
actueelItems = actueelItems.Where(c => MenuItemHelper.ValidateItem(c, false)).ToList<Item>();
将来可能对其他人很方便!
关于c# - 在数据绑定(bind)之前过滤掉 Sitecore 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324919/