internal override IEnumerable <JObject> ExecuteQueryScript(JsonQuery jsonQuery) { jsonQuery.JsonServerCollectionName = this.Connection.jsonServerCollectionName; string script = jsonQuery.ToString(DatabaseType.JsonServer); List <JObject> results = new List <JObject>(); IDataReader reader = this.Connection.JsonServerClient.ExecuteReader(script); StringBuilder jsonStringBuilder = new StringBuilder(); while (reader.Read()) { jsonStringBuilder.Clear(); JObject job = new JObject(); for (int i = 0; i < reader.FieldCount; i++) { if (reader.GetName(i) == "") { // case: SELECT * ==> SELECT Doc(xxx), without `AS`. Debug.Assert(reader.FieldCount == 1, "More than one unnamed column is unparseable"); job = JObject.Parse(reader.GetString(i)); // must be an object? Needs double check. } else { // string qqq = reader.GetName(i); // string ppp = reader.GetString(i); job.Add(new JProperty(reader.GetName(i), JToken.Parse(reader.GetString(i)))); } } results.Add(job); } reader.Close(); return(results); }
internal override IEnumerable <JObject> ExecuteQueryScript(JsonQuery jsonQuery) { string queryScript = jsonQuery.ToString(DatabaseType.DocumentDB); IEnumerable <dynamic> items = this.Connection.ExecuteDocDbQuery(queryScript); foreach (dynamic item in items) { yield return((JObject)item); } }