我正在使用Sitecore 8.1,並且正在爲Sitecore lucene的頁面之一實現過濾器功能。過濾我正在使用謂詞構建器。我有房源頁面上的明細項目3多列表場如何使用Sitecore Lucene的謂詞buider搜索
- 產品
- 類別
- 服務
我的要求是我想申請或之間的組內像產品間條件應爲或,兩組間條件應爲和。例如產品和類別應該是和。
我跟着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,或條件不適用於複選框組之間。
任何人都可以告訴我在給定的代碼或任何最佳的方式來實現這一點我錯了。
任何幫助,將不勝感激
它的工作兄弟...它只是真棒...哇...你是偉大的... – Learner
感謝@Gatogordo讓我試試這個 –
嘿謝謝你的輸入我確實使用了一些你的方法,並用我的舊代碼!再次感謝:) –