Beispiel #1
0
        protected override IQueryable <TSourceData> DefaultFilter(IQueryable <TSourceData> source, IEnumerable <TVal> key)
        {
            var anyNulls = key.Any(c => c == null);

            var expr = ReflectionCache.CallContainsMethod(key.ToArray(), _sourceExpression);

            if (anyNulls)
            {
                var nullcmp = LambdaHelpers.ConstantBinaryLambdaExpression(ExpressionType.Equal, _sourceExpression, null);
                expr = LambdaHelpers.BinaryLambdaExpression(ExpressionType.Or, expr, nullcmp);
            }
            return(ReflectionCache.CallWhere(source, expr));
        }