【发布时间】:2015-10-23 11:20:30
【问题描述】:
我在 Lucene 索引中有一组课程,其中包含零个或多个可用日期。我正在尝试查询索引,以便返回任何可用日期介于从/到日期之间的课程。
使用我的 CourseSearchResultItem 中的属性将该字段作为 DateTime 对象的集合返回
public class CourseSearchResultItem : SearchResultItem
{
[IndexField("availabledatesforcourse")]
public IEnumerable<DateTime> AvailableDatesForCourse { get; set;}
}
正在构造的查询使用以下代码:
if (courseSearchCriteria.FromDate.HasValue)
query = query.Where(c => c.AvailableDatesForCourse.Any(d => d >= courseSearchCriteria.FromDate.Value));
if (courseSearchCriteria.ToDate.HasValue)
query = query.Where(c => c.AvailableDatesForCourse.Any(d => d <= courseSearchCriteria.ToDate.Value));
运行它会产生以下异常:
Any 调用中不支持的 lambda。使用的表达式 'd => (d >= Value (RCS.Web.Areas.RcsEng.Controllers.CoursesApiController +c__DisplayClass10_0).courseSearchCriteria.FromDate.Value)'
我知道这是由于 Sitecore.Linq Any() 方法的限制,但我不确定如何重新创建所需的功能。有没有人有类似的问题可以阐明解决方案?
【问题讨论】:
-
也许我错了,但我认为您不能在 Sitecore 搜索中进行子查询。
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
标签: c# linq sitecore lucene.net sitecore8