public static Streamable <TResult> Select <TSource, TResult>(this Streamable <TSource> source, Func <TSource, TResult> selector) { var streamable = new SelectImpl <TSource, TResult>(selector); source.Subscribe(streamable); return(streamable); }
protected override IDisposable Run(IObserver <TResult> observer, IDisposable cancel, Action <IDisposable> setSink) { if (_selector != null) { var sink = new _(this, observer, cancel); setSink(sink); return(_source.SubscribeSafe(sink)); } else { var sink = new SelectImpl(this, observer, cancel); setSink(sink); return(_source.SubscribeSafe(sink)); } }
private string EncodeAsJSON() { var parameters = new Dictionary <string, object>(); if (WhereImpl != null) { parameters["WHERE"] = WhereImpl.ConvertToJSON(); } if (Distinct) { parameters["DISTINCT"] = true; } if (LimitValue != null) { var e = Misc.TryCast <IExpression, QueryExpression>(LimitValue); parameters["LIMIT"] = e.ConvertToJSON(); } if (SkipValue != null) { var e = Misc.TryCast <IExpression, QueryExpression>(SkipValue); parameters["OFFSET"] = e.ConvertToJSON(); } if (OrderByImpl != null) { parameters["ORDER_BY"] = OrderByImpl.ToJSON(); } var selectParam = SelectImpl?.ToJSON(); if (selectParam != null) { parameters["WHAT"] = selectParam; } if (JoinImpl != null) { var fromJson = FromImpl?.ToJSON(); if (fromJson == null) { throw new InvalidOperationException(CouchbaseLiteErrorMessage.NoAliasInJoin); } var joinJson = JoinImpl.ToJSON() as IList <object>; Debug.Assert(joinJson != null); joinJson.Insert(0, fromJson); parameters["FROM"] = joinJson; } else { var fromJson = FromImpl?.ToJSON(); if (fromJson != null) { parameters["FROM"] = new[] { fromJson }; } } if (GroupByImpl != null) { parameters["GROUP_BY"] = GroupByImpl.ToJSON(); } if (HavingImpl != null) { parameters["HAVING"] = HavingImpl.ToJSON(); } return(JsonConvert.SerializeObject(parameters)); }