小编Hay*_*man的帖子

针对IEnumerable域查询Lucene索引

我在Lucene索引中有一组课程,其中包含零个或多个可用日期。我正在尝试查询索引,以便返回任何可用日期介于从/到日期之间的课程。

使用我的CourseSearchResultItem中的属性,将该字段作为DateTime对象的集合带回

 public class CourseSearchResultItem : SearchResultItem
 {
     [IndexField("availabledatesforcourse")]
     public IEnumerable<DateTime> AvailableDatesForCourse { get; set;}
 }
Run Code Online (Sandbox Code Playgroud)

正在构造的查询使用以下代码:

 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));
Run Code Online (Sandbox Code Playgroud)

运行此命令将产生以下异常:

任何通话中都不支持的lambda。使用的表达式'd =>(d> =值(RCS.Web.Areas.RcsEng.Controllers.CoursesApiController + <> c__DisplayClass10_0).courseSearchCriteria.FromDate.Value)'

我知道这是Sitecore.Linq Any()方法的局限性的结果,但是不确定如何重新创建所需的功能。是否有人有类似的问题可以阐明解决方案?

c# linq lucene.net sitecore sitecore8

3
推荐指数
1
解决办法
898
查看次数

标签 统计

c# ×1

linq ×1

lucene.net ×1

sitecore ×1

sitecore8 ×1