public override IEnumerable ExecuteSubQuery(int iSubQuery, object[] parentArgs) { if (session.ParentArguments != null) { int length = session.ParentArguments.Length; var destinationArray = new object[length + parentArgs.Length]; Array.Copy(session.ParentArguments, destinationArray, length); Array.Copy(parentArgs, 0, destinationArray, length, parentArgs.Length); parentArgs = destinationArray; } ICompiledSubQuery query = session.SubQueries[iSubQuery]; return((IEnumerable)query.Execute(session.Provider, parentArgs, session.UserArguments).ReturnValue); }
public override IEnumerable ExecuteSubQuery(int iSubQuery, object[] parentArgs) { if (this.Session.ParentArguments != null) { // Create array to accumulate args, and add both parent // args and the supplied args to the array int nParent = this.Session.ParentArguments.Length; object[] tmp = new object[nParent + parentArgs.Length]; Array.Copy(this.Session.ParentArguments, tmp, nParent); Array.Copy(parentArgs, 0, tmp, nParent, parentArgs.Length); parentArgs = tmp; } ICompiledSubQuery subQuery = this.Session.SubQueries[iSubQuery]; IEnumerable results = (IEnumerable)subQuery.Execute(this.Session.Provider, parentArgs, this.Session.UserArguments).ReturnValue; return(results); }