internal Expression FamilyHasChildrenAged2() { var range = Quarters.Split('-'); var tf = CodeIds == "1"; Expression <Func <Person, bool> > pred = p => p.Family.People.Any(m => (m.Age ?? 0) >= range[0].ToInt() && (m.Age ?? 0) <= range[1].ToInt() && m.PositionInFamilyId == PositionInFamily.Child); Expression expr = Expression.Convert(Expression.Invoke(pred, parm), typeof(bool)); if (!(op == CompareType.Equal && tf)) { expr = Expression.Not(expr); } return(expr); }
internal Expression FamilyHasChildrenAged3() { var range = Quarters.Split('-'); Expression <Func <Person, bool> > pred = p => p.Family.People.Any(m => (m.Age ?? 0) >= range[0].ToInt() && (m.Age ?? 0) <= range[1].ToInt() && CodeIntIds.Contains(m.GenderId) && m.PositionInFamilyId == PositionInFamily.Child ); Expression expr = Expression.Invoke(pred, parm); // substitute parm for p if (op == CompareType.NotEqual || op == CompareType.NotOneOf) { expr = Expression.Not(expr); } return(expr); }