0
Sitecore
에는 multilist
필드가있는 항목이 있습니다. 필드는 저장되고 색인이 생성되므로이 구문을 사용하여 필드를 쿼리 할 수 있습니다. 항목이 multilist
필드 apps_or에서 하나 개 이상의 값을 가질 때IProviderSearchContext에서 GetQueryable을 사용하여 빈 다 중자가 검색
using (var context = ContentSearchManager.GetIndex("sitecore_web_index").CreateSearchContext())
{
var templateId = new ID(Config.NewsTemplate);
var q = context.GetQueryable<NewsSearchResultItem>().Where(x => x.Language == searchContext.Language && x.TemplateId == templateId);
var appIdPrd = PredicateBuilder.True<NewsSearchResultItem>();
foreach (var t in searchContext.AppIds)
{
var id = GetId(t);
appIdPrd = appIdPrd.Or(p => p.AppIdOr.Contains(id));
}
q = q.Where(appIdPrd);
List<NewsItem> items = new List<NewsItem>(q.Count());
}
class NewsSearchResultItem : SearchResultItem
{
public string Title { get; set; }
public string Body { get; set; }
[IndexField("apps_or")]
public List<ID> AppIdOr { get; set; }
}
그것은 작동합니다. 그러나 multilist
필드에 항목이없는 항목도 검색하려고합니다.
q = q.Where(x => x.AppIdOr.Count == 0);
이 허용되지 않습니다 :
q = q.Where(x => x.AppIdOr == null);
어떤 아이디어가 이 결코 항목을 반환하지?