| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825 |
- /* Copyright 2015-present MongoDB Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Reflection;
- using System.Threading;
- using System.Threading.Tasks;
- namespace MongoDB.Driver.Linq
- {
- /// <summary>
- /// Extension for <see cref="IMongoQueryable" />.
- /// </summary>
- public static class MongoQueryable
- {
- /// <summary>
- /// Determines whether a sequence contains any elements.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence to check for being empty.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// true if the source sequence contains any elements; otherwise, false.
- /// </returns>
- public static Task<bool> AnyAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<bool>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, bool>(Queryable.Any, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Determines whether any element of a sequence satisfies a condition.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence whose elements to test for a condition.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// true if any elements in the source sequence pass the test in the specified predicate; otherwise, false.
- /// </returns>
- public static Task<bool> AnyAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<bool>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, bool>(Queryable.Any, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Decimal"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<decimal> AverageAsync(this IMongoQueryable<decimal> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo<IQueryable<decimal>, decimal>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Nullable{Decimal}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<decimal?> AverageAsync(this IMongoQueryable<decimal?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo<IQueryable<decimal?>, decimal?>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Double"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double> AverageAsync(this IMongoQueryable<double> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<double>, double>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Nullable{Double}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double?> AverageAsync(this IMongoQueryable<double?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<double?>, double?>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Single"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<float> AverageAsync(this IMongoQueryable<float> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo<IQueryable<float>, float>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Nullable{Single}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<float?> AverageAsync(this IMongoQueryable<float?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo<IQueryable<float?>, float?>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Int32"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double> AverageAsync(this IMongoQueryable<int> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<int>, double>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Nullable{Int32}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double?> AverageAsync(this IMongoQueryable<int?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<int?>, double?>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Int64"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double> AverageAsync(this IMongoQueryable<long> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<long>, double>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of a sequence of <see cref="Nullable{Int64}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the average of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The average of the values in the sequence.</returns>
- public static Task<double?> AverageAsync(this IMongoQueryable<long?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<long?>, double?>(Queryable.Average, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Decimal" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<decimal> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, decimal>>, decimal>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Nullable{Decimal}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<decimal?> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, decimal?>>, decimal?>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Double" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, double>>, double>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Nullable{Double}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double?> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, double?>>, double?>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Single" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<float> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, float>>, float>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Nullable{Single}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<float?> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, float?>>, float?>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Int32" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, int>>, double>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Nullable{Int32}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double?> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, int?>>, double?>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Int64" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, long>>, double>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the average of the sequence of <see cref="Nullable{Int64}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The average of the projected values.
- /// </returns>
- public static Task<double?> AverageAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, long?>>, double?>(Queryable.Average, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Returns the number of elements in a sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The <see cref="IMongoQueryable{TSource}" /> that contains the elements to be counted.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The number of elements in the input sequence.
- /// </returns>
- public static Task<int> CountAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, int>(Queryable.Count, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the number of elements in the specified sequence that satisfies a condition.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> that contains the elements to be counted.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The number of elements in the sequence that satisfies the condition in the predicate function.
- /// </returns>
- public static Task<int> CountAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, int>(Queryable.Count, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Returns distinct elements from a sequence by using the default equality comparer to compare values.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The <see cref="IMongoQueryable{TSource}" /> to remove duplicates from.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TSource}" /> that contains distinct elements from <paramref name="source" />.
- /// </returns>
- public static IMongoQueryable<TSource> Distinct<TSource>(this IMongoQueryable<TSource> source)
- {
- return (IMongoQueryable<TSource>)Queryable.Distinct(source);
- }
- /// <summary>
- /// Returns the first element of a sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The <see cref="IMongoQueryable{TSource}" /> to return the first element of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The first element in <paramref name="source" />.
- /// </returns>
- public static Task<TSource> FirstAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.First, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the first element of a sequence that satisfies a specified condition.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return an element from.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The first element in <paramref name="source" /> that passes the test in <paramref name="predicate" />.
- /// </returns>
- public static Task<TSource> FirstAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, TSource>(Queryable.First, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Returns the first element of a sequence, or a default value if the sequence contains no elements.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The <see cref="IMongoQueryable{TSource}" /> to return the first element of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// default(<typeparamref name="TSource" />) if <paramref name="source" /> is empty; otherwise, the first element in <paramref name="source" />.
- /// </returns>
- public static Task<TSource> FirstOrDefaultAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.FirstOrDefault, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return an element from.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// default(<typeparamref name="TSource" />) if <paramref name="source" /> is empty or if no element passes the test specified by <paramref name="predicate" />; otherwise, the first element in <paramref name="source" /> that passes the test specified by <paramref name="predicate" />.
- /// </returns>
- public static Task<TSource> FirstOrDefaultAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, TSource>(Queryable.FirstOrDefault, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Groups the elements of a sequence according to a specified key selector function.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function represented in keySelector.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> whose elements to group.</param>
- /// <param name="keySelector">A function to extract the key for each element.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{T}" /> that has a type argument of <see cref="IGrouping{TKey, TSource}"/>
- /// and where each <see cref="IGrouping{TKey, TSource}"/> object contains a sequence of objects
- /// and a key.
- /// </returns>
- public static IMongoQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
- {
- return (IMongoQueryable<IGrouping<TKey, TSource>>)Queryable.GroupBy(source, keySelector);
- }
- /// <summary>
- /// Groups the elements of a sequence according to a specified key selector function
- /// and creates a result value from each group and its key.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function represented in keySelector.</typeparam>
- /// <typeparam name="TResult">The type of the result value returned by resultSelector.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> whose elements to group.</param>
- /// <param name="keySelector">A function to extract the key for each element.</param>
- /// <param name="resultSelector">A function to create a result value from each group.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{T}" /> that has a type argument of TResult and where
- /// each element represents a projection over a group and its key.
- /// </returns>
- public static IMongoQueryable<TResult> GroupBy<TSource, TKey, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TKey, IEnumerable<TSource>, TResult>> resultSelector)
- {
- return (IMongoQueryable<TResult>)Queryable.GroupBy(source, keySelector, resultSelector);
- }
- /// <summary>
- /// Correlates the elements of two sequences based on key equality and groups the results.
- /// </summary>
- /// <typeparam name="TOuter">The type of the elements of the first sequence.</typeparam>
- /// <typeparam name="TInner">The type of the elements of the second sequence.</typeparam>
- /// <typeparam name="TKey">The type of the keys returned by the key selector functions.</typeparam>
- /// <typeparam name="TResult">The type of the result elements.</typeparam>
- /// <param name="outer">The first sequence to join.</param>
- /// <param name="inner">The sequence to join to the first sequence.</param>
- /// <param name="outerKeySelector">A function to extract the join key from each element of the first sequence.</param>
- /// <param name="innerKeySelector">A function to extract the join key from each element of the second sequence.</param>
- /// <param name="resultSelector">A function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TResult}" /> that contains elements of type <typeparamref name="TResult" /> obtained by performing a grouped join on two sequences.
- /// </returns>
- public static IMongoQueryable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IMongoQueryable<TOuter> outer, IEnumerable<TInner> inner, Expression<Func<TOuter, TKey>> outerKeySelector, Expression<Func<TInner, TKey>> innerKeySelector, Expression<Func<TOuter, IEnumerable<TInner>, TResult>> resultSelector)
- {
- return (IMongoQueryable<TResult>)Queryable.GroupJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector);
- }
- /// <summary>
- /// Correlates the elements of two sequences based on key equality and groups the results.
- /// </summary>
- /// <typeparam name="TOuter">The type of the elements of the first sequence.</typeparam>
- /// <typeparam name="TInner">The type of the elements of the second sequence.</typeparam>
- /// <typeparam name="TKey">The type of the keys returned by the key selector functions.</typeparam>
- /// <typeparam name="TResult">The type of the result elements.</typeparam>
- /// <param name="outer">The first sequence to join.</param>
- /// <param name="inner">The collection to join to the first sequence.</param>
- /// <param name="outerKeySelector">A function to extract the join key from each element of the first sequence.</param>
- /// <param name="innerKeySelector">A function to extract the join key from each element of the second sequence.</param>
- /// <param name="resultSelector">A function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TResult}" /> that contains elements of type <typeparamref name="TResult" /> obtained by performing a grouped join on two sequences.
- /// </returns>
- public static IMongoQueryable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IMongoQueryable<TOuter> outer, IMongoCollection<TInner> inner, Expression<Func<TOuter, TKey>> outerKeySelector, Expression<Func<TInner, TKey>> innerKeySelector, Expression<Func<TOuter, IEnumerable<TInner>, TResult>> resultSelector)
- {
- return GroupJoin(outer, inner.AsQueryable(), outerKeySelector, innerKeySelector, resultSelector);
- }
- /// <summary>
- /// Correlates the elements of two sequences based on matching keys.
- /// </summary>
- /// <typeparam name="TOuter">The type of the elements of the first sequence.</typeparam>
- /// <typeparam name="TInner">The type of the elements of the second sequence.</typeparam>
- /// <typeparam name="TKey">The type of the keys returned by the key selector functions.</typeparam>
- /// <typeparam name="TResult">The type of the result elements.</typeparam>
- /// <param name="outer">The first sequence to join.</param>
- /// <param name="inner">The sequence to join to the first sequence.</param>
- /// <param name="outerKeySelector">A function to extract the join key from each element of the first sequence.</param>
- /// <param name="innerKeySelector">A function to extract the join key from each element of the second sequence.</param>
- /// <param name="resultSelector">A function to create a result element from two matching elements.</param>
- /// <returns>
- /// An <see cref="T:System.Linq.IQueryable`1" /> that has elements of type <typeparamref name="TResult" /> obtained by performing an inner join on two sequences.
- /// </returns>
- public static IMongoQueryable<TResult> Join<TOuter, TInner, TKey, TResult>(this IMongoQueryable<TOuter> outer, IEnumerable<TInner> inner, Expression<Func<TOuter, TKey>> outerKeySelector, Expression<Func<TInner, TKey>> innerKeySelector, Expression<Func<TOuter, TInner, TResult>> resultSelector)
- {
- return (IMongoQueryable<TResult>)Queryable.Join(outer, inner.AsQueryable(), outerKeySelector, innerKeySelector, resultSelector);
- }
- /// <summary>
- /// Correlates the elements of two sequences based on matching keys.
- /// </summary>
- /// <typeparam name="TOuter">The type of the elements of the first sequence.</typeparam>
- /// <typeparam name="TInner">The type of the elements of the second sequence.</typeparam>
- /// <typeparam name="TKey">The type of the keys returned by the key selector functions.</typeparam>
- /// <typeparam name="TResult">The type of the result elements.</typeparam>
- /// <param name="outer">The first sequence to join.</param>
- /// <param name="inner">The sequence to join to the first sequence.</param>
- /// <param name="outerKeySelector">A function to extract the join key from each element of the first sequence.</param>
- /// <param name="innerKeySelector">A function to extract the join key from each element of the second sequence.</param>
- /// <param name="resultSelector">A function to create a result element from two matching elements.</param>
- /// <returns>
- /// An <see cref="T:System.Linq.IQueryable`1" /> that has elements of type <typeparamref name="TResult" /> obtained by performing an inner join on two sequences.
- /// </returns>
- public static IMongoQueryable<TResult> Join<TOuter, TInner, TKey, TResult>(this IMongoQueryable<TOuter> outer, IMongoCollection<TInner> inner, Expression<Func<TOuter, TKey>> outerKeySelector, Expression<Func<TInner, TKey>> innerKeySelector, Expression<Func<TOuter, TInner, TResult>> resultSelector)
- {
- return Join(outer, inner.AsQueryable(), outerKeySelector, innerKeySelector, resultSelector);
- }
- /// <summary>
- /// Returns the number of elements in a sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The <see cref="IMongoQueryable{TSource}" /> that contains the elements to be counted.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The number of elements in the input sequence.
- /// </returns>
- public static Task<long> LongCountAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, long>(Queryable.LongCount, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the number of elements in the specified sequence that satisfies a condition.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> that contains the elements to be counted.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The number of elements in the sequence that satisfies the condition in the predicate function.
- /// </returns>
- public static Task<long> LongCountAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, long>(Queryable.LongCount, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Returns the maximum value in a generic <see cref="IMongoQueryable{TSource}" />.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to determine the maximum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The maximum value in the sequence.
- /// </returns>
- public static Task<TSource> MaxAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.Max, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Invokes a projection function on each element of a generic <see cref="IMongoQueryable{TSource}" /> and returns the maximum resulting value.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TResult">The type of the value returned by the function represented by <paramref name="selector" />.</typeparam>
- /// <param name="source">A sequence of values to determine the maximum of.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The maximum value in the sequence.
- /// </returns>
- public static Task<TResult> MaxAsync<TSource, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TResult>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TResult>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, TResult>>, TResult>(Queryable.Max, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Returns the minimum value in a generic <see cref="IMongoQueryable{TSource}" />.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to determine the minimum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The minimum value in the sequence.
- /// </returns>
- public static Task<TSource> MinAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.Min, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Invokes a projection function on each element of a generic <see cref="IMongoQueryable{TSource}" /> and returns the minimum resulting value.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TResult">The type of the value returned by the function represented by <paramref name="selector" />.</typeparam>
- /// <param name="source">A sequence of values to determine the minimum of.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The minimum value in the sequence.
- /// </returns>
- public static Task<TResult> MinAsync<TSource, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TResult>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TResult>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, TResult>>, TResult>(Queryable.Min, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Filters the elements of an <see cref="IMongoQueryable" /> based on a specified type.
- /// </summary>
- /// <typeparam name="TResult">The type to filter the elements of the sequence on.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable" /> whose elements to filter.</param>
- /// <returns>
- /// A collection that contains the elements from <paramref name="source" /> that have type <typeparamref name="TResult" />.
- /// </returns>
- public static IMongoQueryable<TResult> OfType<TResult>(this IMongoQueryable source)
- {
- return (IMongoQueryable<TResult>)Queryable.OfType<TResult>(source);
- }
- /// <summary>
- /// Sorts the elements of a sequence in ascending order according to a key.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function that is represented by keySelector.</typeparam>
- /// <param name="source">A sequence of values to order.</param>
- /// <param name="keySelector">A function to extract a key from an element.</param>
- /// <returns>
- /// An <see cref="IOrderedMongoQueryable{TSource}"/> whose elements are sorted according to a key.
- /// </returns>
- public static IOrderedMongoQueryable<TSource> OrderBy<TSource, TKey>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
- {
- return (IOrderedMongoQueryable<TSource>)Queryable.OrderBy(source, keySelector);
- }
- /// <summary>
- /// Sorts the elements of a sequence in descending order according to a key.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function that is represented by keySelector.</typeparam>
- /// <param name="source">A sequence of values to order.</param>
- /// <param name="keySelector">A function to extract a key from an element.</param>
- /// <returns>
- /// An <see cref="IOrderedMongoQueryable{TSource}"/> whose elements are sorted in descending order according to a key.
- /// </returns>
- public static IOrderedMongoQueryable<TSource> OrderByDescending<TSource, TKey>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
- {
- return (IOrderedMongoQueryable<TSource>)Queryable.OrderByDescending(source, keySelector);
- }
- /// <summary>
- /// Returns a sample of the elements in the <paramref name="source"/>.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return a sample of.</param>
- /// <param name="count">The number of elements in the sample.</param>
- /// <returns>
- /// A sample of the elements in the <paramref name="source"/>.
- /// </returns>
- public static IMongoQueryable<TSource> Sample<TSource>(this IMongoQueryable<TSource> source, long count)
- {
- return (IMongoQueryable<TSource>)source.Provider.CreateQuery<TSource>(
- Expression.Call(
- null,
- GetMethodInfo(Sample, source, count),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Constant(count)));
- }
- /// <summary>
- /// Projects each element of a sequence into a new form by incorporating the
- /// element's index.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TResult"> The type of the value returned by the function represented by selector.</typeparam>
- /// <param name="source">A sequence of values to project.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TResult}"/> whose elements are the result of invoking a
- /// projection function on each element of source.
- /// </returns>
- public static IMongoQueryable<TResult> Select<TSource, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, TResult>> selector)
- {
- return (IMongoQueryable<TResult>)Queryable.Select(source, selector);
- }
- /// <summary>
- /// Projects each element of a sequence to an <see cref="IEnumerable{TResult}" /> and combines the resulting sequences into one sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TResult">The type of the elements of the sequence returned by the function represented by <paramref name="selector" />.</typeparam>
- /// <param name="source">A sequence of values to project.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TResult}" /> whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.
- /// </returns>
- public static IMongoQueryable<TResult> SelectMany<TSource, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, IEnumerable<TResult>>> selector)
- {
- return (IMongoQueryable<TResult>)Queryable.SelectMany(source, selector);
- }
- /// <summary>
- /// Projects each element of a sequence to an <see cref="IEnumerable{TCollection}" /> and
- /// invokes a result selector function on each element therein. The resulting values from
- /// each intermediate sequence are combined into a single, one-dimensional sequence and returned.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TCollection">The type of the intermediate elements collected by the function represented by <paramref name="collectionSelector" />.</typeparam>
- /// <typeparam name="TResult">The type of the elements of the resulting sequence.</typeparam>
- /// <param name="source">A sequence of values to project.</param>
- /// <param name="collectionSelector">A projection function to apply to each element of the input sequence.</param>
- /// <param name="resultSelector">A projection function to apply to each element of each intermediate sequence.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TResult}" /> whose elements are the result of invoking the one-to-many projection function <paramref name="collectionSelector" /> on each element of <paramref name="source" /> and then mapping each of those sequence elements and their corresponding <paramref name="source" /> element to a result element.
- /// </returns>
- public static IMongoQueryable<TResult> SelectMany<TSource, TCollection, TResult>(this IMongoQueryable<TSource> source, Expression<Func<TSource, IEnumerable<TCollection>>> collectionSelector, Expression<Func<TSource, TCollection, TResult>> resultSelector)
- {
- return (IMongoQueryable<TResult>)Queryable.SelectMany(source, collectionSelector, resultSelector);
- }
- /// <summary>
- /// Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return the single element of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The single element of the input sequence.
- /// </returns>
- public static Task<TSource> SingleAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.Single, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the only element of a sequence that satisfies a specified condition, and throws an exception if more than one such element exists.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return a single element from.</param>
- /// <param name="predicate">A function to test an element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The single element of the input sequence that satisfies the condition in <paramref name="predicate" />.
- /// </returns>
- public static Task<TSource> SingleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, TSource>(Queryable.Single, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return the single element of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The single element of the input sequence, or default(<typeparamref name="TSource" />) if the sequence contains no elements.
- /// </returns>
- public static Task<TSource> SingleOrDefaultAsync<TSource>(this IMongoQueryable<TSource> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, TSource>(Queryable.SingleOrDefault, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}" /> to return a single element from.</param>
- /// <param name="predicate">A function to test an element for a condition.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The single element of the input sequence that satisfies the condition in <paramref name="predicate" />, or default(<typeparamref name="TSource" />) if no such element is found.
- /// </returns>
- public static Task<TSource> SingleOrDefaultAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<TSource>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, bool>>, TSource>(Queryable.SingleOrDefault, source, predicate),
- source.Expression,
- Expression.Quote(predicate)),
- cancellationToken);
- }
- /// <summary>
- /// Bypasses a specified number of elements in a sequence and then returns the
- /// remaining elements.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of source</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}"/> to return elements from.</param>
- /// <param name="count">The number of elements to skip before returning the remaining elements.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TSource}"/> that contains elements that occur after the
- /// specified index in the input sequence.
- /// </returns>
- public static IMongoQueryable<TSource> Skip<TSource>(this IMongoQueryable<TSource> source, int count)
- {
- return (IMongoQueryable<TSource>)Queryable.Skip(source, count);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation(this IMongoQueryable<int> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation(this IMongoQueryable<int?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int?>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation(this IMongoQueryable<long> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation(this IMongoQueryable<long?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long?>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float StandardDeviationPopulation(this IMongoQueryable<float> source)
- {
- return source.Provider.Execute<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float? StandardDeviationPopulation(this IMongoQueryable<float?> source)
- {
- return source.Provider.Execute<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float?>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation(this IMongoQueryable<double> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation(this IMongoQueryable<double?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double?>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal StandardDeviationPopulation(this IMongoQueryable<decimal> source)
- {
- return source.Provider.Execute<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal? StandardDeviationPopulation(this IMongoQueryable<decimal?> source)
- {
- return source.Provider.Execute<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal?>))));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector)
- {
- return source.Provider.Execute<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float? StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector)
- {
- return source.Provider.Execute<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector)
- {
- return source.Provider.Execute<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal? StandardDeviationPopulation<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector)
- {
- return source.Provider.Execute<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync(this IMongoQueryable<int> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync(this IMongoQueryable<int?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync(this IMongoQueryable<long> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync(this IMongoQueryable<long?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float> StandardDeviationPopulationAsync(this IMongoQueryable<float> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float?> StandardDeviationPopulationAsync(this IMongoQueryable<float?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync(this IMongoQueryable<double> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync(this IMongoQueryable<double?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal> StandardDeviationPopulationAsync(this IMongoQueryable<decimal> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal?> StandardDeviationPopulationAsync(this IMongoQueryable<decimal?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float?> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the population standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal?> StandardDeviationPopulationAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationPopulation, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample(this IMongoQueryable<int> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample(this IMongoQueryable<int?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int?>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample(this IMongoQueryable<long> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample(this IMongoQueryable<long?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long?>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float StandardDeviationSample(this IMongoQueryable<float> source)
- {
- return source.Provider.Execute<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float? StandardDeviationSample(this IMongoQueryable<float?> source)
- {
- return source.Provider.Execute<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float?>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample(this IMongoQueryable<double> source)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample(this IMongoQueryable<double?> source)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double?>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal StandardDeviationSample(this IMongoQueryable<decimal> source)
- {
- return source.Provider.Execute<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal? StandardDeviationSample(this IMongoQueryable<decimal?> source)
- {
- return source.Provider.Execute<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal?>))));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector)
- {
- return source.Provider.Execute<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static float? StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector)
- {
- return source.Provider.Execute<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector)
- {
- return source.Provider.Execute<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static double? StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector)
- {
- return source.Provider.Execute<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector)
- {
- return source.Provider.Execute<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static decimal? StandardDeviationSample<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector)
- {
- return source.Provider.Execute<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)));
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync(this IMongoQueryable<int> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync(this IMongoQueryable<int?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<int?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync(this IMongoQueryable<long> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync(this IMongoQueryable<long?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<long?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float> StandardDeviationSampleAsync(this IMongoQueryable<float> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float?> StandardDeviationSampleAsync(this IMongoQueryable<float?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<float?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync(this IMongoQueryable<double> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync(this IMongoQueryable<double?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<double?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal> StandardDeviationSampleAsync(this IMongoQueryable<decimal> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal?> StandardDeviationSampleAsync(this IMongoQueryable<decimal?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<decimal?>))),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<float?> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<double?> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sample standard deviation of a sequence of values that are obtained by invoking a transform function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values to calculate the population standard deviation of.</param>
- /// <param name="selector">A transform function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The population standard deviation of the sequence of values.
- /// </returns>
- public static Task<decimal?> StandardDeviationSampleAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo(StandardDeviationSample, source, selector),
- Expression.Convert(source.Expression, typeof(IMongoQueryable<TSource>)),
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Decimal"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<decimal> SumAsync(this IMongoQueryable<decimal> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo<IQueryable<decimal>, decimal>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Nullable{Decimal}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<decimal?> SumAsync(this IMongoQueryable<decimal?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo<IQueryable<decimal?>, decimal?>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Double"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<double> SumAsync(this IMongoQueryable<double> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<double>, double>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Nullable{Double}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<double?> SumAsync(this IMongoQueryable<double?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<double?>, double?>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Single"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<float> SumAsync(this IMongoQueryable<float> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo<IQueryable<float>, float>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Nullable{Single}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<float?> SumAsync(this IMongoQueryable<float?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo<IQueryable<float?>, float?>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Int32"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<int> SumAsync(this IMongoQueryable<int> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int>(
- Expression.Call(
- GetMethodInfo<IQueryable<int>, int>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Nullable{Int32}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<int?> SumAsync(this IMongoQueryable<int?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int?>(
- Expression.Call(
- GetMethodInfo<IQueryable<int?>, int?>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Int64"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<long> SumAsync(this IMongoQueryable<long> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long>(
- Expression.Call(
- GetMethodInfo<IQueryable<long>, long>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of a sequence of <see cref="Nullable{Int64}"/> values.
- /// </summary>
- /// <param name="source">A sequence of values to calculate the sum of.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>The sum of the values in the sequence.</returns>
- public static Task<long?> SumAsync(this IMongoQueryable<long?> source, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long?>(
- Expression.Call(
- GetMethodInfo<IQueryable<long?>, long?>(Queryable.Sum, source),
- source.Expression),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Decimal" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<decimal> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, decimal>>, decimal>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Nullable{Decimal}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<decimal?> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, decimal?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<decimal?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, decimal?>>, decimal?>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Double" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<double> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, double>>, double>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Nullable{Double}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<double?> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, double?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<double?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, double?>>, double?>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Single" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<float> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, float>>, float>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Nullable{Single}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<float?> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, float?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<float?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, float?>>, float?>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Int32" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<int> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, int>>, int>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Nullable{Int32}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<int?> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, int?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<int?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, int?>>, int?>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Int64" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<long> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, long>>, long>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Computes the sum of the sequence of <see cref="Nullable{Int64}" /> values that is obtained
- /// by invoking a projection function on each element of the input sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">A sequence of values.</param>
- /// <param name="selector">A projection function to apply to each element.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>
- /// The sum of the projected values.
- /// </returns>
- public static Task<long?> SumAsync<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, long?>> selector, CancellationToken cancellationToken = default(CancellationToken))
- {
- return ((IMongoQueryProvider)source.Provider).ExecuteAsync<long?>(
- Expression.Call(
- GetMethodInfo<IQueryable<TSource>, Expression<Func<TSource, long?>>, long?>(Queryable.Sum, source, selector),
- source.Expression,
- Expression.Quote(selector)),
- cancellationToken);
- }
- /// <summary>
- /// Returns a specified number of contiguous elements from the start of a sequence.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">The sequence to return elements from.</param>
- /// <param name="count">The number of elements to return.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TSource}"/> that contains the specified number of elements
- /// from the start of source.
- /// </returns>
- public static IMongoQueryable<TSource> Take<TSource>(this IMongoQueryable<TSource> source, int count)
- {
- return (IMongoQueryable<TSource>)Queryable.Take(source, count);
- }
- /// <summary>
- /// Performs a subsequent ordering of the elements in a sequence in ascending
- /// order according to a key.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function that is represented by keySelector.</typeparam>
- /// <param name="source">A sequence of values to order.</param>
- /// <param name="keySelector">A function to extract a key from an element.</param>
- /// <returns>
- /// An <see cref="IOrderedMongoQueryable{TSource}"/> whose elements are sorted according to a key.
- /// </returns>
- public static IOrderedMongoQueryable<TSource> ThenBy<TSource, TKey>(this IOrderedMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
- {
- return (IOrderedMongoQueryable<TSource>)Queryable.ThenBy(source, keySelector);
- }
- /// <summary>
- /// Performs a subsequent ordering of the elements in a sequence in descending
- /// order according to a key.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <typeparam name="TKey">The type of the key returned by the function that is represented by keySelector.</typeparam>
- /// <param name="source">A sequence of values to order.</param>
- /// <param name="keySelector">A function to extract a key from an element.</param>
- /// <returns>
- /// An <see cref="IOrderedMongoQueryable{TSource}"/> whose elements are sorted in descending order according to a key.
- /// </returns>
- public static IOrderedMongoQueryable<TSource> ThenByDescending<TSource, TKey>(this IOrderedMongoQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
- {
- return (IOrderedMongoQueryable<TSource>)Queryable.ThenByDescending(source, keySelector);
- }
- /// <summary>
- /// Filters a sequence of values based on a predicate.
- /// </summary>
- /// <typeparam name="TSource">The type of the elements of <paramref name="source" />.</typeparam>
- /// <param name="source">An <see cref="IMongoQueryable{TSource}"/> to return elements from.</param>
- /// <param name="predicate">A function to test each element for a condition.</param>
- /// <returns>
- /// An <see cref="IMongoQueryable{TSource}"/> that contains elements from the input sequence
- /// that satisfy the condition specified by predicate.
- /// </returns>
- public static IMongoQueryable<TSource> Where<TSource>(this IMongoQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)
- {
- return (IMongoQueryable<TSource>)Queryable.Where(source, predicate);
- }
- private static MethodInfo GetMethodInfo<T1, T2>(Func<T1, T2> f, T1 unused)
- {
- return f.GetMethodInfo();
- }
- private static MethodInfo GetMethodInfo<T1, T2, T3>(Func<T1, T2, T3> f, T1 unused1, T2 unused2)
- {
- return f.GetMethodInfo();
- }
- }
- }
|