Я работаю над Sitecore 8.1, и я реализую функцию фильтра для одной из страниц Sitecore lucene. Fot filtering Я использую построитель предикатов. У меня есть 3 мульти-листы поля на деталях элементовКак я могу использовать predicate buider для Sitecore Lucene Search
- Продукт
- Категория
- Услуги
Теперь на странице данных У меня есть все три группы фильтров, как флажками, как указано в изображении ниже -
Мои требования Я хочу применить Или между внутри группы, как между условиями продукта должно быть Или и между двумя группами состояние должно быть И. Например, продукты и Категория должны быть И.
Я последовал http://getfishtank.ca/blog/building-dynamic-content-search-linq-queries-in-sitecore-7 блоге реализовать этот
Для достижения этой цели, что я пытаюсь -
var builder = PredicateBuilder.True<TestResultItem>();
var Categorybuilder = PredicateBuilder.False<TestResultItem>();
if (!string.IsNullOrEmpty(Categorys))
{
var CategoryItems = Categorys.Split('|');
foreach (var Category in CategoryItems)
{
var ct = Sitecore.ContentSearch.Utilities.IdHelper.NormalizeGuid(Categorys, true);
Categorybuilder = Categorybuilder.Or(i => i.Category.Contains(ct));
}
}
var Servicebuilder = PredicateBuilder.False<TestResultItem>();
if (!string.IsNullOrEmpty(Service))
{
var ServiceItems = Service.Split('|');
foreach (var ser in ServiceItems)
{
var si = Sitecore.ContentSearch.Utilities.IdHelper.NormalizeGuid(ser, true);
Servicebuilder = Servicebuilder.Or(i => i.Service.Contains(si));
}
}
var productsbuilder = PredicateBuilder.False<TestResultItem>();
if (!string.IsNullOrEmpty(products))
{
var productItems = products.Split('|');
foreach (var product in productItems)
{
var pd = Sitecore.ContentSearch.Utilities.IdHelper.NormalizeGuid(product, true);
productsbuilder = productsbuilder.Or(i => i.Category.Contains(pd));
}
}
Servicebuilder = Servicebuilder.Or(Categorybuilder);
productsbuilder = productsbuilder.Or(Servicebuilder);
builder = builder.And(productsbuilder);
выше данный код не работает для меня. Я знаю, что делаю что-то не так, поскольку я плохо разбираюсь в Predicate builder, Или Условие не работает между группами checkbox.
Может кто-нибудь скажет мне, где я ошибаюсь в данном коде или наилучшим образом достичь этого.
Любая помощь будет оценена
это работает bro ... его просто потрясающе ... вау ... ты отличный ... – Learner
Спасибо @Gatogordo позвольте мне попробовать это –
Эй спасибо за ваши материалы Я использовал некоторые из ваших подходов и сделал с моим старый код !! Еще раз спасибо :) –