コード例 #1
0
ファイル: SymbolOperators.cs プロジェクト: ykwd/rDSN
 public static ISymbols <TSource> AsyncCall <TSource>(
     this ISymbols <TSource> source,
     Expression <Action <TSource> > call
     )
 {
     return(source.Provider.CreateSymbolsQuery <TSource>(
                Expression.Call(null,
                                ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource) }),
                                new Expression[] { source.Expression, call }
                                )
                ));
 }
コード例 #2
0
ファイル: SymbolOperators.cs プロジェクト: ykwd/rDSN
 public static ISymbol <TResult> Gather <TSource, TResult>(
     this ISymbols <TSource> source,
     Expression <Func <IEnumerable <TSource>, TResult> > reducer
     )
 {
     return(source.Provider.CreateSymbolQuery <TResult>(
                Expression.Call(null,
                                ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource), typeof(TResult) }),
                                new Expression[] { source.Expression, reducer }
                                )
                ));
 }
コード例 #3
0
ファイル: ServiceModifiers.cs プロジェクト: ykwd/rDSN
 public static ISymbols <TValue> CachedCall <TSource, TKey, TValue>(
     this ISymbols <TSource> source,
     Expression <Func <TSource, TKey> > cacheKeySelector,
     Expression <Func <ISymbol <TSource>, ISymbol <TValue> > > call
     )
 {
     return(source
            .Call(s => new { s, r = Case_Cache <TKey, TValue> .CacheService.Get(cacheKeySelector.Compile()(s)) })
            .IfThenElse(
                r => r.r.HasValue,
                r => r.Call(v => v.r.Value),
                r => r.Call(v => v.s).Call(call)
                ));
 }
コード例 #4
0
ファイル: SymbolOperators.cs プロジェクト: ykwd/rDSN
 public static ISymbols <TResult> IfThenElse <TSource, TResult>(
     this ISymbols <TSource> source,
     Expression <Func <TSource, bool> > ifPredicate,
     Expression <Func <ISymbol <TSource>, ISymbol <TResult> > > thenBlock,
     Expression <Func <ISymbol <TSource>, ISymbol <TResult> > > elseBlock
     )
 {
     return(source.Provider.CreateSymbolsQuery <TResult>(
                Expression.Call(null,
                                ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource), typeof(TResult) }),
                                new Expression[] { source.Expression, ifPredicate, thenBlock, elseBlock }
                                )
                ));
 }
コード例 #5
0
ファイル: SymbolOperators.cs プロジェクト: ykwd/rDSN
 public static ISymbols <TSource> Top <TSource, TKey>(
     this ISymbols <TSource> source,
     Expression <Func <TSource, TKey> > keySelector,
     int count,
     bool isAscending
     )
 {
     return(source.Provider.CreateSymbolsQuery <TSource>(
                Expression.Call(null,
                                ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource) }),
                                new Expression[] { source.Expression, Expression.Constant(count) }
                                )
                ));
 }
コード例 #6
0
ファイル: SymbolOperators.cs プロジェクト: ykwd/rDSN
 public static ISymbols <TResult> WhileDo <TSource, TContext, TResult>(
     this ISymbols <TSource> source,
     Expression <Func <TSource, TContext> > contextInit,
     Expression <Func <TContext, bool> > exitPredicate,
     Expression <Action <ISymbol <TContext> > > loopBody,
     Expression <Func <TContext, TResult> > resultExtractor
     )
 {
     return(source.Provider.CreateSymbolsQuery <TResult>(
                Expression.Call(null,
                                ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource), typeof(TContext), typeof(TResult) }),
                                new Expression[] { source.Expression, contextInit, exitPredicate, loopBody, resultExtractor }
                                )
                ));
 }