C# 在数据绑定之前筛选出Sitecore项目

C# 在数据绑定之前筛选出Sitecore项目,c#,.net,sitecore,C#,.net,Sitecore,我想从Sitecore.Data.items类型的列表中筛选/删除项目。 这就是我填写清单的方式 List<Item> actueelItems = Sitecore.Context.Database.SelectItems("/sitecore/content/destil_nl/Home/").ToList(); List actueletems=Sitecore.Context.Database.SelectItems(“/Sitecore/content/destl_nl/

我想从Sitecore.Data.items类型的列表中筛选/删除项目。 这就是我填写清单的方式

List<Item> actueelItems = Sitecore.Context.Database.SelectItems("/sitecore/content/destil_nl/Home/").ToList();
List actueletems=Sitecore.Context.Database.SelectItems(“/Sitecore/content/destl_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;
}
公共静态bool ValidateItem(项)
{
返回ValidateItem(项,true);
}
公共静态bool ValidateItem(项项项、bool检查可视化)
{
布尔结果=真;

如果(item.Versions.Count我已经解决了我自己的难题。 在我有列表的地方,我将只运行linq。在哪里验证我的项目:

actueelItems = actueelItems.Where(c => MenuItemHelper.ValidateItem(c, false)).ToList<Item>();
actueletems=actueletems.Where(c=>MenuItemHelper.ValidateItem(c,false)).ToList();

将来可能对其他人很方便!

LINQ plus扩展方法或包装类为查询和筛选sitecore项目提供了很多可能性