public IDocumentFinderQueryBuilder WhereEquals <T1, T2>(Expression <Func <T1, T2> > property, T2 value) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => { var a = DocumentPropertyFinder.GetFor(d, path); if (a == null) { if (value == null) { return(true); } else { return(false); } } return(a.Equals(value)); }); return(this); }
public IDocumentFinderQueryBuilder WhereExists <T1, T2>(Expression <Func <T1, T2> > property) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => DocumentPropertyFinder.Exists(d, path)); return(this); }
public IDocumentFinderQueryBuilder WhereNullOrMissing <T1>(Expression <Func <T1, object> > property) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => { var a = DocumentPropertyFinder.GetFor(d, path); if (a != null) { return(false); } return(true); }); return(this); }
public IDocumentFinderQueryBuilder WhereIn <T1, T2>(Expression <Func <T1, T2> > property, IEnumerable <T2> values) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => { var a = DocumentPropertyFinder.GetFor(d, path); if (a == null) { return(false); } if (!(a is T2)) { return(false); } return(values.Contains((T2)a)); }); return(this); }