/// <summary> /// Calculates count of elements of provided <paramref name="provider"/>. /// </summary> /// <param name="provider">The provider.</param> /// <param name="session">The session.</param> public static long Count(this CompilableProvider provider, Session session) { return(provider .Aggregate(null, new AggregateColumnDescriptor("$Count", 0, AggregateType.Count)) .GetRecordSet(session) .First() .GetValue <long>(0)); }
/// <summary> /// Calculates count of elements of provided <paramref name="provider"/>. /// </summary> /// <param name="provider">The provider.</param> /// <param name="session">The session.</param> public static long Count(this CompilableProvider provider, Session session) { ArgumentValidator.EnsureArgumentNotNull(provider, nameof(provider)); ArgumentValidator.EnsureArgumentNotNull(session, nameof(session)); using var recordSetReader = provider .Aggregate(null, new AggregateColumnDescriptor("$Count", 0, AggregateType.Count)) .GetRecordSetReader(session, new ParameterContext()); return(recordSetReader.MoveNext() && recordSetReader.Current != null ? recordSetReader.Current.GetValue <long>(0) : throw new InvalidOperationException("Sequence contains no elements.")); }