Пример #1
0
        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);
        }
Пример #2
0
        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);
        }