Exemple #1
0
 internal static MethodCallExpression MakeTake(Type entityType, ISpListItemsProvider listItemsProvider,
                                               QueryModel queryModel)
 {
     return(Expression.Call(MethodUtils.SpqTake.MakeGenericMethod(entityType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)),
                            Expression.Constant(queryModel, typeof(QueryModel))));
 }
Exemple #2
0
        internal static TResult First <TSource, TResult>(ISpListItemsProvider listItemsProvider, QueryModel queryModel,
                                                         bool throwIfNothing, bool throwIfMultiple, Func <TSource, TResult> selector)
        {
            var item = First <TSource>(listItemsProvider, queryModel, throwIfNothing, throwIfMultiple);

            return(item == null ? default(TResult) : selector(item));
        }
Exemple #3
0
 internal static MethodCallExpression MakeSelect(Type contentType, Type resulType,
                                                 ISpListItemsProvider listItemsProvider, QueryModel queryModel, LambdaExpression selector)
 {
     return(Expression.Call(MethodUtils.SpqSelect.MakeGenericMethod(contentType, resulType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)),
                            Expression.Constant(queryModel, typeof(QueryModel)),
                            Expression.Constant(selector.Compile())));
 }
Exemple #4
0
 internal static MethodCallExpression MakeElementAt(Type entityType, ISpListItemsProvider listItemsProvider,
                                                    QueryModel queryModel, int index, bool throwIfNothing)
 {
     return(Expression.Call(MethodUtils.SpqElementAt.MakeGenericMethod(entityType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)),
                            Expression.Constant(queryModel, typeof(QueryModel)),
                            Expression.Constant(index),
                            Expression.Constant(throwIfNothing)));
 }
Exemple #5
0
 internal static MethodCallExpression MakeFirst(Type entityType, ISpListItemsProvider listItemsProvider,
                                                QueryModel queryModel, bool throwIfNothing, bool throwIfMultiple)
 {
     return(Expression.Call(MethodUtils.SpqFirst.MakeGenericMethod(entityType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)),
                            Expression.Constant(queryModel, typeof(QueryModel)),
                            Expression.Constant(throwIfNothing),
                            Expression.Constant(throwIfMultiple)));
 }
Exemple #6
0
 internal static MethodCallExpression MakeElementAt(Type entityType, Type projectionType,
                                                    ISpListItemsProvider listItemsProvider, QueryModel queryModel, int index, bool throwIfNothing,
                                                    LambdaExpression selector)
 {
     return(Expression.Call(MethodUtils.SpqElementAtP.MakeGenericMethod(entityType, projectionType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)),
                            Expression.Constant(queryModel, typeof(QueryModel)),
                            Expression.Constant(index),
                            Expression.Constant(throwIfNothing),
                            Expression.Constant(selector.Compile())));
 }
Exemple #7
0
        internal static T ElementAt <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel, int index,
                                        bool throwIfNothing)
        {
            var item = listItemsProvider.ElementAtOrDefault <T>(queryModel, index);

            if (throwIfNothing && item == null)
            {
                throw Error.NoMatch();
            }

            return(item);
        }
Exemple #8
0
        internal static TResult ElementAt <TSource, TResult>(ISpListItemsProvider listItemsProvider,
                                                             QueryModel queryModel,
                                                             int index, bool throwIfNothing, Func <TSource, TResult> selector)
        {
            var item = ElementAt <TSource>(listItemsProvider, queryModel, index, throwIfNothing);

            if (item == null)
            {
                return(default(TResult));
            }

            return(selector(item));
        }
Exemple #9
0
        internal static T First <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel, bool throwIfNothing,
                                    bool throwIfMultiple)
        {
            var item = throwIfMultiple
                ? listItemsProvider.SingleOrDefault <T>(queryModel)
                : listItemsProvider.FirstOrDefault <T>(queryModel);

            if (throwIfNothing && item == null)
            {
                throw Error.NoMatch();
            }

            return(item);
        }
Exemple #10
0
 internal static MethodCallExpression MakeFakeFetch(Type entityType, ISpListItemsProvider listItemsProvider)
 {
     return(Expression.Call(MethodUtils.SpqFakeFetch.MakeGenericMethod(entityType),
                            Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider))));
 }
Exemple #11
0
 internal static IEnumerable <TResult> Take <TSoure, TResult>(ISpListItemsProvider listItemsProvider,
                                                              QueryModel queryModel, Func <TSoure, TResult> selector)
 {
     return(Fetch <TSoure>(listItemsProvider, queryModel).Select(selector));
 }
Exemple #12
0
 internal static IQueryable <T> FakeFetch <T>(ISpListItemsProvider listItemsProvider)
 {
     throw new NotImplementedException("If you see that exception it means that expression tree rewrite failed");
 }
Exemple #13
0
 internal static IEnumerable <T> Take <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel)
 {
     return(Fetch <T>(listItemsProvider, queryModel));
 }
Exemple #14
0
 internal static TSource Max <TSource>(ISpListItemsProvider listItemsProvider, QueryModel queryModel)
 {
     return(listItemsProvider.Fetch <TSource>(queryModel)
            .Max());
 }
Exemple #15
0
 internal static TResult Max <TSource, TResult>(ISpListItemsProvider listItemsProvider,
                                                QueryModel queryModel, Func <TSource, TResult> selector)
 {
     return(listItemsProvider.Fetch <TSource>(queryModel)
            .Max(selector));
 }
Exemple #16
0
 internal static int Count <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel)
 {
     return(listItemsProvider.Count <T>(queryModel));
 }
Exemple #17
0
        private static Expression MakeFakeFetch(ISpListItemsProvider listItemsProvider)
        {
            Guard.CheckNotNull(nameof(listItemsProvider), listItemsProvider);

            return(SpQueryable.MakeFakeFetch(typeof(T), listItemsProvider));
        }
Exemple #18
0
        internal static bool NotAny <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel)
        {
            queryModel.RowLimit = 1;

            return(!listItemsProvider.Any <T>(queryModel));
        }
Exemple #19
0
 public SpList(ISpListItemsProvider listItemsProvider)
     : base(MakeFakeFetch(listItemsProvider))
 {
     ListItemsProvider = listItemsProvider;
 }