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)))); }
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)); }
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()))); }
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))); }
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))); }
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()))); }
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); }
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)); }
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); }
internal static MethodCallExpression MakeFakeFetch(Type entityType, ISpListItemsProvider listItemsProvider) { return(Expression.Call(MethodUtils.SpqFakeFetch.MakeGenericMethod(entityType), Expression.Constant(listItemsProvider, typeof(ISpListItemsProvider)))); }
internal static IEnumerable <TResult> Take <TSoure, TResult>(ISpListItemsProvider listItemsProvider, QueryModel queryModel, Func <TSoure, TResult> selector) { return(Fetch <TSoure>(listItemsProvider, queryModel).Select(selector)); }
internal static IQueryable <T> FakeFetch <T>(ISpListItemsProvider listItemsProvider) { throw new NotImplementedException("If you see that exception it means that expression tree rewrite failed"); }
internal static IEnumerable <T> Take <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel) { return(Fetch <T>(listItemsProvider, queryModel)); }
internal static TSource Max <TSource>(ISpListItemsProvider listItemsProvider, QueryModel queryModel) { return(listItemsProvider.Fetch <TSource>(queryModel) .Max()); }
internal static TResult Max <TSource, TResult>(ISpListItemsProvider listItemsProvider, QueryModel queryModel, Func <TSource, TResult> selector) { return(listItemsProvider.Fetch <TSource>(queryModel) .Max(selector)); }
internal static int Count <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel) { return(listItemsProvider.Count <T>(queryModel)); }
private static Expression MakeFakeFetch(ISpListItemsProvider listItemsProvider) { Guard.CheckNotNull(nameof(listItemsProvider), listItemsProvider); return(SpQueryable.MakeFakeFetch(typeof(T), listItemsProvider)); }
internal static bool NotAny <T>(ISpListItemsProvider listItemsProvider, QueryModel queryModel) { queryModel.RowLimit = 1; return(!listItemsProvider.Any <T>(queryModel)); }
public SpList(ISpListItemsProvider listItemsProvider) : base(MakeFakeFetch(listItemsProvider)) { ListItemsProvider = listItemsProvider; }