我想过滤掉/删除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轻松过滤此列表。
答案 0 :(得分:1)
我已经解决了自己的难题。 我有列表,我将运行一个linq .where并验证我的项目:
actueelItems = actueelItems.Where(c => MenuItemHelper.ValidateItem(c, false)).ToList<Item>();
将来可能会为其他人提供便利!
答案 1 :(得分:1)
LINQ plus扩展方法或包装类为查询和过滤sitecore项提供了很多可能性。