private void ExtractResultsIntoList(IList <T> list, ObjectDeserialiserQuerySink querySink) { if (querySink.IncomingResults != null) { foreach (T t in querySink.IncomingResults) { list.Add(t); } } }
public IEnumerator <T> ExecuteQuery() { using (var loggingScope = new LoggingScope("SparqlCommand<T>.ExecuteQuery()")) { #region Tracing #line hidden if (Logger.IsDebugEnabled) { Logger.Debug("{0}.", CommandText); } #line default #endregion MethodCallExpression e = null; IList <T> results = new List <T>(); switch (Connection.Store.QueryMethod) { case LinqQueryMethod.CustomSparql: case LinqQueryMethod.GenericSparql: case LinqQueryMethod.InMemorySparql: case LinqQueryMethod.NativeSparql: case LinqQueryMethod.RemoteSparql: //Set up the Connection and the Results Sink LinqToSparqlConnection <T> connection = (LinqToSparqlConnection <T>)Connection; if (connection.SparqlQuery.Expressions.ContainsKey("Select")) { e = connection.SparqlQuery.Expressions["Select"]; } ObjectDeserialiserQuerySink sink = new ObjectDeserialiserQuerySink(connection.SparqlQuery.OriginalType, typeof(T), InstanceName, ElideDuplicates, e, (RdfDataContext)connection.SparqlQuery.DataContext); //Compile and Parse the Query DateTime beforeQueryCompilation = DateTime.Now; SparqlQuery query = this._parser.ParseFromString(CommandText); DateTime afterQueryCompilation = DateTime.Now; DateTime beforeQueryRun = DateTime.Now; //Run the Query connection.Store.QueryProcessor.Run(query, sink); //Extract and Register Results DateTime afterQueryRun = DateTime.Now; ExtractResultsIntoList(results, sink); RegisterResults(connection.SparqlQuery, results); break; default: break; } return(results.GetEnumerator()); } }