Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
SearchClient.Instance.Search<Events>() .Filter(x => x.StartDate.MatchDay(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day)) .GetResult();
Great, but x.StartDate is nullable (i.e. of type DateTime?) and MatchDay() is only available for the non-nullable DateTime.
If anyone could explain why the code in my first post does not work, it would make me really happy! :-)
It seems that epifind cannot handle .Value
Can you try the following code:
public static FilterExpression<DateTime?> AsDateMatch(this DateTime? value, DateTime matchValue) { var minValue = new DateTime(matchValue.Year, matchValue.Month, matchValue.Day, 0, 0, 0); var maxValue = new DateTime(matchValue.Year, matchValue.Month, matchValue.Day, 23, 59, 59); return new FilterExpression<DateTime?>(x => x.Exists() & x.InRange(minValue, maxValue)); }
Ok, I think I know why the original code doesn't work.
First, I've indexed the following object:
public class Event { public string Title { get; set; } public DateTime? StartDate { get; set; } }
Then I opened epifind index, and noticed that StartDate field is indexed as StartDate$$date
Then I used Fiddler to see all requests that are sent to epifind, and noticed that x.Value.Date.Match(matchValue) generates the following query:
"term":{"StartDate.Value$$date":"2016-03-02T23:00:00Z"}
Since StartDate.Value$$date field doesn't exist, we're getting no hits.
Hope this helps!
I need to filter only events that starts today, ignoring the time of day. I have tried with the following extension method:
...but this does not work. It seems that x.Value.Date.Match(matchValue) are not allowed.
I use the extension method like this: