using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json.Linq; using RethinkDb.Driver.Net; namespace RethinkDb.Driver.Model { /// /// A grouped result helper. /// /// The KEY type /// The VALUE type public class GroupedResult : IGrouping { #pragma warning disable 1591 // Missing XML comment for publicly visible type or member public GroupedResult(JToken key, JArray items) { this.Key = key.ToObject(Converter.Serializer); this.Items = items.ToObject>(Converter.Serializer); } public GroupedResult(JToken key, JValue item) { this.Key = key.ToObject(Converter.Serializer); var value = item.ToObject(Converter.Serializer); this.Items = new List() {value}; } public IEnumerator GetEnumerator() { return this.Items.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } #pragma warning restore 1591 // Missing XML comment for publicly visible type or member /// /// The Key /// public TKey Key { get; } /// /// The list of items grouped by /// public List Items { get; set; } } /// /// A typed grouped result helper. /// /// The KEY type /// The VALUE type public class GroupedResultSet : List> { /// /// Item type /// public Type ItemType => typeof(TItem); /// /// Key type /// public Type KeyType => typeof(TKey); } }