私はSitecore 8.1を開発しており、Sitecore luceneによるページのフィルタ機能を実装しています。 Fot filtering私は述語ビルダーを使用しています。私は、リストページに今すぐ詳細項目の3のマルチリストフィールドSitecore Luceneで述語ブイダーを使用する方法Search
- 製品
- カテゴリー
- サービス
を持って下の画像に与えられたとして、私は、チェックボックスのようにすべての3つのグループフィルタを持っている -
私の要件は、またはのようなグループの中に適用したいですか?製品条件の間にまたはであり、2つのグループ間の条件はとである必要があります。たとえば、商品とカテゴリはとです。
私がしようとしています何これを達成するために、この
を実装するために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);
を上記のコードは私のために働いていません。条件付きビルダーでまたはの条件が機能していないため、私が間違ったことをしていることがわかります。
誰でも私が指定したコードまたはこれを達成するための最良の方法で間違っている場所を教えてください。
すべてのヘルプは
それはちょうど素晴らしい...うわー...あなたは素晴らしいです... – Learner
@Gatogordoは私にこれを試してみましょう –
あなたの入力のためにちょっと感謝私はあなたのアプローチのいくつかを使用してやった古いコード!もう一度ありがとう:) –