// x:\jsc.svn\core\scriptcorelib.extensions\scriptcorelib.extensions\query\experimental\queryexpressionbuilder.sum.cs public static Task <long> SumAsync(this IQueryStrategy <long> source) { Console.WriteLine("enter SumAsync"); // tested by // X:\jsc.svn\examples\javascript\LINQ\test\auto\TestSelect\TestWebSumLong\Application.cs var z = new TaskCompletionSource <long>(); //QueryExpressionBuilder.WithConnectionAsync( QueryExpressionBuilder.WithConnection( async cc => { Console.WriteLine("enter WithConnection SumAsync"); var xDbCommand = QueryExpressionBuilder.GetScalarCommand( source, cc: cc, Operand: QueryExpressionBuilder.xReferencesOfLong.SumOfLongReference.Method ); Console.WriteLine("enter WithConnection SumAsync before ExecuteScalarAsync"); // will WithConnection actually wait or terminate? // never returns? var __value = await xDbCommand.ExecuteScalarAsync(); Console.WriteLine("enter WithConnection SumAsync after ExecuteScalarAsync " + new { __value }); z.SetResult( (long)__value ); } ); return(z.Task); }
// X:\jsc.svn\core\ScriptCoreLib.Async\ScriptCoreLib.Async\Query\Experimental\QueryExpressionBuilderAsync.SumAsync.cs public static long Sum(this IQueryStrategy <long> source) { var value = default(long); // tested by // X:\jsc.svn\examples\javascript\LINQ\test\auto\TestSelect\TestSQLiteCLRSumLong\Program.cs QueryExpressionBuilder.WithConnection( cc => { var xDbCommand = QueryExpressionBuilder.GetScalarCommand( source, cc: cc, Operand: QueryExpressionBuilder.xReferencesOfLong.SumOfLongReference.Method ); var __value = xDbCommand.ExecuteScalar(); value = (long)__value; } ); return(value); }